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