2016-04-13 8 views
-1

Я хотел бы знать, как объединить столбцы в dataframe/list в R с разделителем запятой. Ниже приведен образец данных.Как объединить значения в строке с запятой

Name Red Blue Green 
Jack 4 5  3 
John 5 6  4 
Gen 3 7  1 
Pra 4 6  2 

Ожидаемое будет:

Name Colors 
Jack 4,5,3 
John 5,6,4 
Gen 3,7,1 
Pra 4,6,2 

немедленная помощь будет оценена.

Заранее спасибо

ответ

0

Мы можем использовать paste с do.call. Обратите внимание, что даже если у вас есть 100 столбцов paste, приведенный ниже код делает это автоматически без боли упомянуть paste(df1$Red, df1$blue, df1$Green, df1$Orange, etc..., sep=",") т.д.

newdf1 <- cbind(df1[1], Colors=do.call(paste, c(df1[-1], sep=","))) 
newdf1 
# Name Colors 
#1 Jack 4,5,3 
#2 John 5,6,4 
#3 Gen 3,7,1 
#4 Pra 4,6,2 

или аналогичный вариант с sprintf

cbind(df1[1], Colors=do.call(sprintf, c(df1[-1], list(fmt="%d,%d,%d")))) 

Или с unite от tidyr

library(dplyr) 
library(tidyr) 
df1 %>% 
    unite(Colors, Red:Green, sep=",") 
# Name Colors 
#1 Jack 4,5,3 
#2 John 5,6,4 
#3 Gen 3,7,1 
#4 Pra 4,6,2 
+0

Кто-то делает предвзятое выживание. – akrun

-4

Я хотел бы скопировать данные в Excel, добавить столбец со значением, и добавить формулы = A1 & D1 & В1 & D1 & С1

А, В, С столбцы, D представляет собой разделенные

+0

Не могли бы вы объяснить, почему копирование данных в Excel из R для выполнения очень простой операции - хорошая идея? Просто потому, что вы, возможно, не R? –

+0

Дэвид прав, переход в Excel с точки зрения R, «понижение». Хотя это по-прежнему действительный ответ. –

1

Я предлагаю функцию вставки с разделителем «,».

df$Colors<-paste(df$Red, df$Blue, df$Green, sep =",")