【问题标题】:String Split with comma and newline用逗号和换行符分割字符串
【发布时间】:2020-10-14 21:10:37
【问题描述】:

我有一个字符串,看起来像

'"aaa","bbb","ccc","ddd","eee"\n"1","2","3","4","5"\n"6","7","8","9","10"'

我想用逗号和换行符分割并将其转换为数据框并得到输出

aaa bbb ccc ddd eee
1   2   3   4  5
6   7   8   9  10

有没有办法在 R 中做到这一点?

【问题讨论】:

  • 什么是s?它不是一个有效的 R 对象。
  • @suren 我刚刚编辑了它。我只有一个字符串,需要转换成上述格式的数据框。

标签: r tidyr stringr


【解决方案1】:

我假设你的字符串是

s = '"aaa","bbb","ccc","ddd","eee"\n"1","2","3","4","5"\n"6","7","8","9","10"'

那你可以试试

> read.table(text = s, header = TRUE, sep = ",")
  aaa bbb ccc ddd eee
1   1   2   3   4   5
2   6   7   8   9  10

一个较短的(感谢来自@akrun 的cmets)是data.table::fread

> fread(s)
   aaa bbb ccc ddd eee
1:   1   2   3   4   5
2:   6   7   8   9  10

read.csv(感谢@thelatemail 的cmets)

> read.csv(text = s)
  aaa bbb ccc ddd eee
1   1   2   3   4   5
2   6   7   8   9  10

【讨论】:

  • 这是一个csv,所以使用read.csv - read.csv(text=x)
  • @thelatemail 也谢谢你
【解决方案2】:

这里有一个使用read.table 的选项,虽然我删除了一些引号、逗号和换行符(替换为实际的换行符)。

df <- read.table(header = TRUE, 
                 text="aaa bbb ccc ddd eee 
                 1 2 3 4 5 
                 6 7 8 9 10")              

输出:

  aaa bbb ccc ddd eee
1   1   2   3   4   5
2   6   7   8   9  10

【讨论】:

  • 谢谢,但是否可以不替换为实际的换行符?
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 2020-08-30
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多