2017-05-10 39 views
1

這裏我的數據框:轉列到字符串中的R

mydf <- data.frame('col_1' = c('a', 'b', 'c', 'd'), 'col_2' = c(1,1,2,2)) 

我想將其轉換爲以下數據框:

mydf_1 <- data.frame('col_1' = c('a', 'b', 'c', 'd'), 'col_2' = c(1,1,2,2), 'col_1' = c('a-b', 'a-b', 'c-d', 'c-d')) 

所以基本上由col_2分組和轉換列轉換爲字符串

這是我試過的:

library(dplyr) 
mydf_1 <- mydf %>% group_by(col_1) %>% 
mutate(col_3 = paste(col_1, sep = "-")) 

但它沒有奏效。有什麼建議麼?

回答

3

在這裏你去:

df$col_3 = ave(as.character(df$col_1), 
       df$col_2, 
       FUN = function(x){ 
         paste0(x,collapse = "-") 
       }) 

這將返回:

> df 
    col_1 col_2 col3 
1  a  1 a-b 
2  b  1 a-b 
3  c  2 c-d 
4  d  2 c-d 
+0

如此精闢簡單! – user1700890

1

使用dplyr - 這使得明確承擔總有對

result <- mydf %>% 
    group_by(col_2) %>% 
    mutate(col_1.1 = if_else(is.na(lag(col_1)), 
           paste(col_1, lead(col_1), sep= "-"), 
           paste(lag(col_1), col_1, sep="-"))) 

# col_1 col_2 col_1.1 
# <fctr> <dbl> <chr> 
# 1  a  1  a-b 
# 2  b  1  a-b 
# 3  c  2  c-d 
# 4  d  2  c-d