2 つの列、1 つの文字、1 つの数値を持つデータ フレームがあるとします。
df <- data.frame(chr = letters[1:10],
ind = c(NA, NA, 1, NA, NA, 2, NA, NA, 3, NA))
chr ind
1 a NA
2 b NA
3 c 1
4 d NA
5 e NA
6 f 2
7 g NA
8 h NA
9 i 3
10 j NA
のchr
非NA
インデックス間の行のみを毎回取得して、列の行をどのように貼り付けind
ますか?
最初の行がNA
無視されないまでの最初の行が必要です。次に、ind
= 1 に遭遇し、次に "d" と "e"ind
を連結し、次に = 2 に遭遇し、次に "g" と "h" を連結します。
newChar
"d e"
"g h"
"j"
for ループなしでこれを行うにはどうすればよいでしょうか。
はい、分かりました。トリックは使用することですzoo::na.locf
いっぱいにNA
値をして、group_by
そしてpaste
:
library(dplyr)
library(zoo)
df %>%
mutate(bool = is.na(ind), groupID = na.locf(ind, na.rm = FALSE)) %>%
filter(bool & !is.na(groupID)) %>% group_by(groupID) %>%
summarise(newChr = paste(chr, collapse = " ")) %>%
select(newChr)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加