【发布时间】:2016-08-13 01:21:53
【问题描述】:
如何从每行包含三个逗号分隔值的长字符向量创建数据帧的列。第一个元素包含数据框列的名称。
不是每一行都有三列,有些地方只有一个逗号:
> string.split.cols[1] #This row is the .names
[1] "Acronym,Full form,Remarks"
> string.split.cols[2]
[1] "AC,Actual Cost, "
> string.split.cols[3]
[1] "ACWP,Actual Cost of Work Performed,Old term for AC"
> string.split.cols[4]
[1] "ADM,Arrow Diagramming Method,Rarely used now"
> string.split.cols[5]
[1] "ADR,Alternative Dispute Resolution, "
> string.split.cols[6]
[1] "AE,Apportioned Effort, "
输出应该是一个包含三列的 df,我只对前两列感兴趣,将丢弃第三列。
这是原始字符串,有些列没有转义逗号,但这没什么大不了的。
string.cols [1] "Acronym,Full form,Remarks\nAC,Actual Cost, \nACWP,Actual Cost of Work Performed,Old term for AC\nADM,Arrow Diagramming Method,Rarely used now\nADR,Alternative Dispute Resolution, \nAE,Apportioned Effort, \nAOA,Activity-on-Arrow,Rarely used now\nAON,Activity-on-Node, \nARMA,Autoregressive Moving Average, \nBAC,Budget at Completion, \nBARF,Bought-into, Approved, Realistic, Formal,from Rita Mulcahy's PMP Exam Prep\nBCR,Benefit Cost Ratio, \nBCWP,Budgeted Cost of Work Performed,Old term for EV\nBCWS,Budgeted Cost of Work Scheduled,Old term for PV\nCA,Control Account, \nCBR,Cost Benefit Ratio, \nCBT,Computer-Based Test, \n..."
【问题讨论】:
-
你看过
read.csv或readr::read_csv或data.table::fread吗? -
我不想使用文件,它是一个字符串,我收到
a <- fread(string.split.cols, header = TRUE)的此错误:'input' 必须是包含文件名、命令、完整路径的单个字符串文件、以“http[s]://”、“ftp[s]://”或“file://”开头的 URL,或输入数据本身。似乎它应该工作,但我不知道。 -
如果
read.csv的text参数不够用,请使用paste和collapse = '\n'将其作为单个文本字符串处理,大多数阅读器函数都可以处理,例如readr::read_csv(paste(x, collapse = '\n'))或data.table::fread(paste(x, collapse = '\n'))
标签: r