如果我有这样一个大的制表符分隔文件,

lowenbrau
a 789
b 678
c 970
augustiner
d 89
e 563
f 456
g 123

依此类推,我想添加一列这样的标题,
a 789 lowenbrau
b 678 lowenbrau
c 970 lowenbrau
d 89 augustiner
e 563 augustiner
f 456 augustiner
g 123 augustiner

我应该在R中使用什么功能或软件包?
很抱歉没有提供我的尝试,但是真诚的我不知道如何搜索该问题以获取提示。因此,任何提示都是值得欢迎的。

最佳答案

使用readLines读取文件后,创建一个逻辑索引,将split转换为list,然后将stack转换为data.frame,并使用read.table将第一列分为两列

i1 <- grepl("^\\w+$", lines)
d1 <- stack(setNames(split(lines[!i1], cumsum(i1)[!i1]), lines[i1]))
cbind(read.table(text=d1$values, header = FALSE, stringsAsFactors = FALSE), d1[2])
#  V1  V2        ind
#1  a 789  lowenbrau
#2  b 678  lowenbrau
#3  c 970  lowenbrau
#4  d  89 augustiner
#5  e 563 augustiner
#6  f 456 augustiner
#7  g 123 augustiner

数据
lines <- readLines("file.txt")

关于r - 在R中重塑csv文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48407459/

10-11 12:27