在R中重塑csv文件

时间:2018-01-23 17:21:27

标签: r

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

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中使用什么功能或包? 我为没有提供我的尝试而道歉,但真诚地我不知道如何搜索此问题以获得提示。所以任何提示都是受欢迎的。

1 个答案:

答案 0 :(得分:3)

在使用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")