R 根据条件增加数据帧的行数

R 根据条件增加数据帧的行数,r,dataframe,rows,R,Dataframe,Rows,这是数据的一小部分: 我有: DPT CITY ID1 ID2 Ct_value1 Ct_value_2 suspicion 02 Mpl EDE1 A2074 A2093 B3045 28.24 24.21 28.35 24.21 23.24 24.45 analytic` 04 Txl EDE2 A234 A345 A356 23.45 23.42 25.44 21.9

这是数据的一小部分:

我有:

DPT CITY   ID1  ID2                 Ct_value1           Ct_value_2           suspicion
02   Mpl  EDE1  A2074 A2093 B3045   28.24 24.21 28.35   24.21 23.24 24.45     analytic`
04   Txl  EDE2  A234 A345 A356      23.45 23.42 25.44   21.98 23.43 24.34     clinic
05   Erl  EDE3  A347                23.67               25.56                 clinic
03   Mpl  EDE4  A234 B456           22.34 34.24         45.35 42.34           analytic
我希望根据ID2变量中包含的单元格中的信息数量增加行数。例如,如果ID2中有3个值由空格分隔,则新数据集中每个不同ID2应产生3行或一行,如下所示:

DPT CITY   ID1  ID2     Ct_value1   Ct_value_2 suspicion
02   Mpl  EDE1  A2074   28.24       24.21      analytic`
02   Mpl  EDE1  A2093   24.21       23.24      analytic              
02   Mpl  EDE1  B3045   28.35       24.45      analytic
04   Txl  EDE2  A234    23.45       21.98      clinic
04   Txl  EDE2  A345    23.42       23.43      clinic
04   Txl  EDE2  A356    25.44       24.34      clinic
05   Erl  EDE3  A347    23.67       25.56      clinic
03   Mpl  EDE4  A234    22.34       45.35      analytic
03   Mpl  EDE4  B456    34.24       42.34      analytic
我现在在新的dataframe中有9行,而不是以前的4行,我希望其他变量(如猜疑或城市)的信息相同。
有人看到这个问题吗?非常感谢您的帮助。非常感谢

使用tidyverse

library(data.table)
setDT(df)
df[, list(ID2 = tstrsplit(ID2, " "),
          Ct_value1 = tstrsplit(Ct_value1, " "),
          Ct_value_2 = tstrsplit(Ct_value_2, " ")),
   by = list(DPT, CITY, ID1, suspicion)]
像这样试试

library(tidyverse)

separate_rows(data = df, ID2, Ct_value1, Ct_value_2, convert = TRUE)
使用数据表

library(data.table)
setDT(df)
df[, list(ID2 = tstrsplit(ID2, " "),
          Ct_value1 = tstrsplit(Ct_value1, " "),
          Ct_value_2 = tstrsplit(Ct_value_2, " ")),
   by = list(DPT, CITY, ID1, suspicion)]