使用R从不同位置的多列中提取信息

Extract information from multiple columns at different positions using R

我有一个大约有 dataframe。 26,000 个条目。数据框有一个 ID 列,ID 以“;”分隔多个值列也用“;”分隔。它看起来像这样:

df <- data.frame (ID = c("sample1;sample2;sample3", "sample3", "sample3;sample4;sample5;sample6"),
                  value_1 = c("10;20;30", "30", "30;40;50;60"),
                  value_2 = c("130", "130", "130"))

问题是 ID 条目的数量和位置以及相应的值在一行中是不变的,但它们在行之间是不同的。此外,有些列(例如 value_2)中的条目应保持不变。有没有一种简单的方法可以降低数据集的复杂性?谢谢

我们可以使用separate_rows

library(dplyr)
library(tidyr)
df %>% 
  separate_rows(ID, value_1, convert = TRUE)

-输出

# A tibble: 8 x 3
# ID      value_1 value_2
#  <chr>     <int> <chr>  
#1 sample1      10 130    
#2 sample2      20 130    
#3 sample3      30 130    
#4 sample3      30 130    
#5 sample3      30 130    
#6 sample4      40 130    
#7 sample5      50 130    
#8 sample6      60 130    

或使用cSplit

library(splitstackshape)
cSplit(df, c("ID", "value_1"), ";", "long")