r - 使用条件增加数据框的行数
问题描述
这是数据的一小部分:
我有 :
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 行或 1 行,如下所示:
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
我现在在新数据框中有 9 行,而不是之前的 4 行,我希望其他变量(例如怀疑或城市)的信息相同。有人看到这个问题吗?帮助将不胜感激。十分感谢 !!
解决方案
使用tidyverse
试试这样
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)]
推荐阅读
- privacy - iOS 14 PHAsset fetchAssetsWithMediaType 选择更多
- mongodb - Mongo:计算所有组的总文档数
- python - Python 异常和流控制:究竟什么是“意外”?
- android - 如何在android sdk 30中使用setDecorFitsSystemWindows(false)使ui全屏透明状态栏
- c++ - cconfig.obj 和 cutility.obj 错误 lnk2001。找不到关于这 2 个 obj 文件的任何信息
- firebase - Firestore 规则,request.auth.uid 与我从 firebase auth google signin 获得的 uid 不同
- javascript - 看不到引导导入
- python - 如何在 TensorFlow 中使用决策树构建和预测
- python - 在尚未包含“http://”的 URL 前添加“http://”
- mysql - 将十六进制数字的字符串转换为bigint?