我有过
measure estimate.difference
1 pT8 vs pT7 0.33 (95% CI: -1.39 to 2.06)
2 No pT vs pT7 -2.31 (95% CI: -4.95 to 0.33)
3 No pT vs pT8 -2.64 (95% CI: -5.67 to 0.38)
4 pT8 vs pT7 0.14 (95% CI: -0.26 to 0.53)
5 No pT vs pT7 0.16 (95% CI: -0.37 to 0.69)df$estimate.difference比较了df$measure中列出的两个独立预测模型的结果。
如果df$estimate.difference为正,则... vs ...的“左侧”是最佳模型,如果值为负值,则“右侧”为最佳。我需要一个列来表示什么模型是最好的(我的数据集很大)。
是否可以创建一个字符列,该列首先读取df$estimate.difference是正的还是负的,然后打印左或右的“度量值名称”?
预期输出
measure best.model estimate.difference
1 pT8 vs pT7 pT8 0.33 (95% CI: -1.39 to 2.06)
2 No pT vs pT7 pT7 -2.31 (95% CI: -4.95 to 0.33)
3 No pT vs pT8 pT8 -2.64 (95% CI: -5.67 to 0.38)
4 pT8 vs pT7 pT8 0.14 (95% CI: -0.26 to 0.53)
5 No pT vs pT7 No pT 0.16 (95% CI: -0.37 to 0.69)数据
df <- structure(list(measure = c("pT8 vs pT7", "No pT vs pT7", "No pT vs pT8",
"pT8 vs pT7", "No pT vs pT7"), estimate.difference = c("0.33 (95% CI: -1.39 to 2.06)",
"-2.31 (95% CI: -4.95 to 0.33)", "-2.64 (95% CI: -5.67 to 0.38)",
"0.14 (95% CI: -0.26 to 0.53)", "0.16 (95% CI: -0.37 to 0.69)"
)), row.names = c(NA, 5L), class = "data.frame")发布于 2022-08-20 08:58:39
使用strsplit和mapply。
transform(df,
best.model=mapply(`[`, strsplit(df$measure, ' vs '),
(as.numeric(sapply(strsplit(df$estimate.difference, ' '), `[`, 1)) < 0 ) + 1)
)
# measure estimate.difference best.model
# 1 pT8 vs pT7 0.33 (95% CI: -1.39 to 2.06) pT8
# 2 No pT vs pT7 -2.31 (95% CI: -4.95 to 0.33) pT7
# 3 No pT vs pT8 -2.64 (95% CI: -5.67 to 0.38) pT8
# 4 pT8 vs pT7 0.14 (95% CI: -0.26 to 0.53) pT8
# 5 No pT vs pT7 0.16 (95% CI: -0.37 to 0.69) No pThttps://stackoverflow.com/questions/73425318
复制相似问题