仅在特定索引中连接数据框的字符串行

时间:2017-04-21 14:09:03

标签: r concatenation

假设我们有一个包含两列的数据框,一个字符,一个数字:

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循环,你会怎么做?

1 个答案:

答案 0 :(得分:1)

好的,我明白了。诀窍是使用zoo::na.locf填充NA值,然后group_bypaste

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)