2017-07-05 180 views
-1

我有一个数据框,看起来像下面的示例df,它包含一个字符变量VAR将字符串拆分为长数据帧格式的值

df<-data.frame(ID = 1:2, 
       VAR = c("VAL1\r\nVAL2\r\nVAL8","VAL2\r\nVAL5"), 
       stringsAsFactors = FALSE) 
#  ID     VAR 
# 1 1 VAL1\r\nVAL2\r\nVAL8 
# 2 2   VAL2\r\nVAL5 

我想字符变量通过回马车分裂 - 换行\r\n并获得以下所需的数据框:

# ID VAR 
# 1 1 VAL1 
# 2 1 VAL2 
# 3 1 VAL8 
# 4 2 VAL2 
# 5 2 VAL5 

我写的代码如下,但我不知何故在丢失gather功能,同时尝试将数据帧的格式更改为长格式。

library(tidyverse) 
df <- df %>% 
    bind_cols(as.data.frame(str_split(df$VAR,"\r\n",simplify = TRUE))) %>% 
    select(-VAR) %>% 
    gather(key,value) 

请指教。

+0

@Sotos这是怎样的一个链接的副本? – akrun

+1

@akrun是不是?如果我这样做'cSplit(df,“VAR”,“\ r \ n”,“long”)'这是一个在链接中的答案,我得到了预期的结果 – Sotos

+0

我的意思是sep不一样。 – akrun

回答

-1

我们可以做到这一点与separate_rows

library(tidyr) 
separate_rows(df, VAR, sep='\\s+')