R 如何基于字符串列为每个观测值创建一个包含多行的新数据框?
我在R中有一个数据框,里面有观测数据。一列包含每个观测的多个数据点,记录为一个带分隔符的长字符串。我想重新构造这些数据,以便一次观察可以发生在多行中,而不是根据下面的示例 现在的数据如下所示:R 如何基于字符串列为每个观测值创建一个包含多行的新数据框?,r,string,dataframe,dplyr,R,String,Dataframe,Dplyr,我在R中有一个数据框,里面有观测数据。一列包含每个观测的多个数据点,记录为一个带分隔符的长字符串。我想重新构造这些数据,以便一次观察可以发生在多行中,而不是根据下面的示例 现在的数据如下所示: df <- data.frame(matrix(c("A", "B", "X", "Y", "{data1
df <- data.frame(matrix(c("A", "B",
"X", "Y",
"{data1},{data2}", "{data1}"),
nrow = 2,
ncol = 3,
byrow = F))
names(df) <- c("key", "info", "more_info")
df <- data.frame(matrix(c("A", "A", "B",
"X", "X", "Y",
"{data1}", "{data2}", "{data1}"),
nrow = 3,
ncol = 3,
byrow = F))
names(df) <- c("key", "info", "more_info")
df您可以从tidyr中使用分隔行
:
> library(tidyr)
> separate_rows(df, more_info, sep=",")
# A tibble: 3 x 3
key info more_info
<fct> <fct> <chr>
1 A X {data1}
2 A X {data2}
3 B Y {data1}
>库(tidyr)
>单独的行(df,更多信息,sep=“,”)
#一个tibble:3x3
密钥信息更多信息
1a X{data1}
2a X{data2}
3b Y{data1}
在strsplit
library(dplyr)
library(tidyr)
df %>%
mutate(more_info = strsplit(more_info, ",")) %>%
unnest(c(more_info))