如何将值复制到R数据集中符合条件的选定行



我是R的新手,现在在R中有一个数据集。我需要将一些值复制到相应的行中(例如,在图片示例数据集中,将"aaa"、"bbb"复制到列A和B,直到它们满足"ccc"one_answers"ddd",然后在后处理数据集中删除空行(

新编辑:实际数据实际数据集

从类似CSV的开始

aaa,bbb
500,600,1,0.59
500,600,1,0.59
ccc,ddd
500,600,1,0.59
500,600,1,0.59
eee,fff
500,600,1,0.59
500,600,1,0.59
500,600,1,0.59

我们可以做到:

txt <- readLines("something.csv")
txtgroups <- split(txt, cumsum(grepl("^[^0-9]", txt)))
txtgroups
# $`1`
# [1] "aaa,bbb"        "500,600,1,0.59" "500,600,1,0.59"
# $`2`
# [1] "ccc,ddd"        "500,600,1,0.59" "500,600,1,0.59"
# $`3`
# [1] "eee,fff"        "500,600,1,0.59" "500,600,1,0.59" "500,600,1,0.59"
unlist(lapply(txtgroups, function(z) paste0(z[1], ",", z[-1])))
#                       11                       12                       21                       22                       31                       32                       33 
# "aaa,bbb,500,600,1,0.59" "aaa,bbb,500,600,1,0.59" "ccc,ddd,500,600,1,0.59" "ccc,ddd,500,600,1,0.59" "eee,fff,500,600,1,0.59" "eee,fff,500,600,1,0.59" "eee,fff,500,600,1,0.59" 
read.csv(text = unlist(lapply(txtgroups, function(z) paste0(z[1], ",", z[-1]))), header = FALSE)
#    V1  V2  V3  V4 V5   V6
# 1 aaa bbb 500 600  1 0.59
# 2 aaa bbb 500 600  1 0.59
# 3 ccc ddd 500 600  1 0.59
# 4 ccc ddd 500 600  1 0.59
# 5 eee fff 500 600  1 0.59
# 6 eee fff 500 600  1 0.59
# 7 eee fff 500 600  1 0.59

最新更新