如何基于列“ num”的值创建新列“ desc”?
这是我的原始数据集。 a,b,c,d,e和f是行名。
这是我想要的输出。请注意,“ desc”由“ num”列的行名组成。 num 2的行名是b和d;因此编号2的desc是“ Var:b,d”。 num 3的行名是c,e,f;因此编号3的desc是“ Var:c,e,f。”
这是创建数据集的代码。
df <- data.frame(num=c(1, 2, 3, 4, 3, 3))
rownames(df) <- c("a", "b", "c", "d", "e", "f")
答案 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