在R中的group_by中使用paste0时需要帮助

时间:2019-08-28 20:29:10

标签: r dplyr

我的df如下,我想添加新列以基于col1来添加ID。我用pdlyr编写代码,但是我不知道如何解决它。

df %>%
  group_by(ID) %>%
  mutate(col2= paste0(col1,?????)   <- what to write here?

df<-read.table(text="
ID   col1
1      A
1      B
1      A
2      C     
2      C
2      D", header=T)
result
ID   col1   col2
1      A     ABA
1      B     ABA
1      A     ABA
2      C     CCD
2      C     CCD
2      D     CCD

1 个答案:

答案 0 :(得分:3)

使用defaultdict参数。

collapse

给予:

df %>%
  group_by(ID) %>%
  mutate(col2= paste(col1, collapse = "")) %>%
  ungroup

或者仅使用基数R,我们可以使用这种单线:

# A tibble: 6 x 3
     ID col1  col2 
  <int> <fct> <chr>
1     1 A     ABA  
2     1 B     ABA  
3     1 A     ABA  
4     2 C     CCD  
5     2 C     CCD  
6     2 D     CCD  

给予:

transform(df, col2 = ave(as.character(col1), ID, FUN = function(x) paste(x, collapse = "")))