[英]How to copy value to the selected rows that meet the criteria in R dataset
從 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.