我有一个大数据框,我需要连续查找一个字符元素,如果它们是连续的,则将它们组合起来,例如:
v1 v2 v3 v4 v5 v6 v7 v8
m i l k 200 gr. low fat
C H e e s e 200 gr.
milk l o w fat 1.5 liter 0%
我想将其更改为此:
v1 v2 v3 v4 v5 v6
milk 200 gr. low fat NA
cheese 200 gr. NA NA NA
milk low fat 1.5 Liter 0%
如果您能提出我可以在大数据上实现的方法,将不胜感激。
答案 0 :(得分:1)
使用nchar
,您可以检测单个字符的单元格,并将它们与paste
组合成行apply
。使用unname
获得更清晰的输出。
apply(d, 1, function(x) {
unname(c(paste(x[which(nchar(x) == 1)], collapse=""), x[which(nchar(x) != 1)]))
})
# [[1]]
# [1] "milk" "200" "gr." "low" "fat"
#
# [[2]]
# [1] "CHeese" "200" "gr."
#
# [[3]]
# [1] "low" "milk" "fat" "1.5" "liter" "0%"
数据
d <- structure(list(v1 = c("m", "C", "milk"), v2 = c("i", "H", "l"
), v3 = c("l", "e", "o"), v4 = c("k", "e", "w"), v5 = c("200",
"s", "fat"), v6 = c("gr.", "e", "1.5"), v7 = c("low", "200",
"liter"), v8 = c("fat", "gr.", "0%")), row.names = c(NA, -3L), class = "data.frame")