【问题标题】:Split Strings into values in long dataframe format [duplicate]将字符串拆分为长数据帧格式的值[重复]
【发布时间】:2017-12-08 21:48:49
【问题描述】:

我有一个类似于以下示例 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)

请指教。

【问题讨论】:

  • @Sotos 这是链接的副本吗?
  • @akrun 不是吗?如果我这样做cSplit(df, "VAR", "\r\n", "long") 这是链接欺骗中的答案,我会得到预期的结果
  • 我的意思是 sep 不一样。
  • 哦,当然。数据框也称为mydf,而不是df。最好也就此提出一个新问题。

标签: r dplyr data-manipulation stringr tidyverse


【解决方案1】:

我们可以通过separate_rows 做到这一点

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 2020-07-23
    • 1970-01-01
    • 2019-07-23
    • 2020-05-20
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多