我有一个很大的.csv文件,其中列变量是嵌套/缩进的行:
我希望通过提取嵌套/缩进的变量并将它们粘贴到列中来将此文件整形为整洁的数据:
注意:缩进实际上是5个空格,(10个空格,15个空格......)
编辑1 :请发表建设性批评意见
答案 0 :(得分:1)
最好有一个可重复的例子。这是一个开始:
df <- data.frame(x=c('a', ' b', ' c', ' d', 'e'), y = 1:5, stringsAsFactors=F)
df
x y
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
它看起来像一个普通的数据框,但空间仍然存在。我编写了一个脚本来计算第一列中缩进的空格量。然后它会将这些计数添加到数据框中。
spaces <- gregexpr('\\s', df$x)
counts <- lapply(spaces, attr, which='match.length')
indx <- lapply(counts, function(x) length(x[x > 0]))
df$z <- indx
df
x y z
1 a 1 0
2 b 2 1
3 c 3 2
4 d 4 1
5 e 5 0
如果有人能够在大于零的列上找到一种“走宽”的方法,同时保持添加列与右行分组,那么问题就会得到解决。
据我所知,预期的输出是:
newdf <- data.frame(x=c(rep('a', 4), 'e'),
one= c(NA,'b', 'b', 'd',NA),
two= c(NA, NA, 'c', NA, NA), y=1:5)
newdf
x one two y
1 a <NA> <NA> 1
2 a b <NA> 2
3 a b c 3
4 a d <NA> 4
5 e <NA> <NA> 5