基于列值的字符串连接

时间:2019-03-26 15:52:01

标签: r string concatenation

如何基于列“ num”的值创建新列“ desc”?

这是我的原始数据集。 a,b,c,d,e和f是行名。

enter image description here

这是我想要的输出。请注意,“ desc”由“ num”列的行名组成。 num 2的行名是b和d;因此编号2的desc是“ Var:b,d”。 num 3的行名是c,e,f;因此编号3的desc是“ Var:c,e,f。”

enter image description here

这是创建数据集的代码。

df <- data.frame(num=c(1, 2, 3, 4, 3, 3))
rownames(df) <- c("a", "b", "c", "d", "e", "f")

2 个答案:

答案 0 :(得分:3)

我们根据行名(/opt/bitnami/apache2/htdocs)创建一个列,并按'num'分组,然后rownames_to_column通过对行名列('rn')的元素进行创建来创建'desc'

paste

数据

library(tidyverse)
df %>% 
  rownames_to_column('rn') %>% 
  group_by(num) %>% 
  transmute(desc = paste0('var: ', toString(rn)))
# A tibble: 6 x 2
# Groups:   num [3]
#    num desc        
#  <dbl> <chr>       
#1     1 var: a      
#2     2 var: b, d   
#3     3 var: c, e, f
#4     2 var: b, d   
#5     3 var: c, e, f
#6     3 var: c, e, f

答案 1 :(得分:2)

transform(df, desc = ave(row.names(df), df$num, FUN = function(x) toString(x)))
#  num    desc
#a   1       a
#b   2       b
#c   3 c, e, f
#d   4       d
#e   3 c, e, f
#f   3 c, e, f