簡體   English   中英

如何將值復制到 R 數據集中符合條件的選定行

[英]How to copy value to the selected rows that meet the criteria in R dataset

我是 R 的新手,現在在 R 中有一個數據集。 我需要將一些值復制到相應的行中(例如,在圖片樣本數據集中,將“aaa”、“bbb”復制到 A 列和 B 列,直到它們遇到“ccc”和“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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM