Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何基于字符串列为每个观测值创建一个包含多行的新数据框?_R_String_Dataframe_Dplyr - Fatal编程技术网

R 如何基于字符串列为每个观测值创建一个包含多行的新数据框?

R 如何基于字符串列为每个观测值创建一个包含多行的新数据框?,r,string,dataframe,dplyr,R,String,Dataframe,Dplyr,我在R中有一个数据框,里面有观测数据。一列包含每个观测的多个数据点,记录为一个带分隔符的长字符串。我想重新构造这些数据,以便一次观察可以发生在多行中,而不是根据下面的示例 现在的数据如下所示: df <- data.frame(matrix(c("A", "B", "X", "Y", "{data1

我在R中有一个数据框,里面有观测数据。一列包含每个观测的多个数据点,记录为一个带分隔符的长字符串。我想重新构造这些数据,以便一次观察可以发生在多行中,而不是根据下面的示例

现在的数据如下所示:

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))