Конкатенация строк на основе значений столбца - PullRequest
1 голос
/ 26 марта 2019

Как мне создать новый столбец "desc" на основе значения столбца "num"?

Вот мой оригинальный набор данных. a, b, c, d, e и f являются именами строк.

enter image description here

Вот вывод, который я ищу. Обратите внимание, что «desc» состоит из имен строк столбца «num». Имена строк num 2 - это b и d; следовательно, desc из num 2 - это «Var: b, d». Имена строк с номером 3: c, e, f; следовательно, desc из num 3 - это "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 ]

3 голосов
/ 26 марта 2019

Мы создаем столбец из имен строк (rownames_to_column), сгруппированных по 'num', создаем 'desc' с помощью paste, используя элементы столбца с именами строк ('rn')

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

данные

df <- structure(list(num = c(1, 2, 3, 2, 3, 3)), 
   class = "data.frame", row.names = c("a", 
  "b", "c", "d", "e", "f"))
2 голосов
/ 26 марта 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...