1. ホーム
  2. r

[解決済み] 複数の列を一緒に貼り付ける

2022-10-13 08:42:19

質問

データフレームにたくさんの列があり、以下のように("-"で区切って)貼り付けたいのですが、どうすればよいでしょうか?

data <- data.frame('a' = 1:3, 
                   'b' = c('a','b','c'), 
                   'c' = c('d', 'e', 'f'), 
                   'd' = c('g', 'h', 'i'))
i.e.     
     a   b   c  d  
     1   a   d   g  
     2   b   e   h  
     3   c   f   i  

自分がなりたいのはどちらか

a x  
1 a-d-g  
2 b-e-h  
3 c-f-i  

で普通に出来ました。

within(data, x <- paste(b,c,d,sep='-'))

で、古いカラムを削除するのですが、残念ながらカラムの名前は具体的にはわからず、全てのカラムの総称として、例えば、私が知っているのは cols <- c('b','c','d')

どなたかこれを行う方法をご存知でしょうか?

どのように解決するのですか?

# your starting data..
data <- data.frame('a' = 1:3, 'b' = c('a','b','c'), 'c' = c('d', 'e', 'f'), 'd' = c('g', 'h', 'i')) 

# columns to paste together
cols <- c( 'b' , 'c' , 'd' )

# create a new column `x` with the three columns collapsed together
data$x <- apply( data[ , cols ] , 1 , paste , collapse = "-" )

# remove the unnecessary columns
data <- data[ , !( names( data ) %in% cols ) ]