R 函数计算数据框中具有不同名称的列
我有这样一个数据帧(总计): 我想要一个函数来评估两个标准。当我一个接一个地做的时候R 函数计算数据框中具有不同名称的列,r,function,R,Function,我有这样一个数据帧(总计): 我想要一个函数来评估两个标准。当我一个接一个地做的时候 total$critA <- as.numeric((total$mA1+total$nmA1>=4)&(total$nmA1>=bdA1)) total$critA=4)和(total$nmA1>=bdA1)) 如果为真,我得到0,如果为假,我得到1。我想将此应用于所有治疗(A1(m、nm和bd)、A2、A3等) 我对R真的很陌生,还没有弄明白如何做一大堆事情,所以非常感谢您的帮
total$critA <- as.numeric((total$mA1+total$nmA1>=4)&(total$nmA1>=bdA1))
total$critA=4)和(total$nmA1>=bdA1))
如果为真,我得到0,如果为假,我得到1。我想将此应用于所有治疗(A1(m、nm和bd)、A2、A3等)
我对R真的很陌生,还没有弄明白如何做一大堆事情,所以非常感谢您的帮助。谢谢 我的想法是这样的:(如果你与
dput
共享数据,我会复制/粘贴数据并进行测试……以获得编写好的、可重复的R问题的其他技巧
add_crit = function(data, treatment) {
m_name = paste0("m", treatment)
nm_name = paste0("nm", treatment)
bd_name = paste0("bd", treatment)
crit_name = paste0("crit", treatment)
data[crit_name] = as.numeric(
(data[m_name] + data[nm_name] >= 4) & (data[nm_name] >= data[bd_name])
)
return(data)
}
treatments = c("A1", "A2", "B1", "B2")
data_with_crit = total
for (trt in treatments) {
data_with_crit = add_crit(data_with_crit, trt)
}
我使用paste
将您需要的列名构建为字符串。当您将列名存储在变量中时,您需要使用[
而不是$
,否则它们同样有效
fortunes::fortune(343)
大多数R新手迟早会被这条太方便的捷径所困扰。作为R新手,
将R视为您的银行账户:过度使用$
-提取可能会导致不良后果。
最好尽早养成'[['
和'['
的习惯。
--Peter Ehlers(关于$-extraction的使用)
R-help(2013年3月)
处理此问题的另一种(更一般化的)方法是将数据“融化”为长格式—您将有一个
treatment
列,列值为A1、A2、
,然后是m
、nm
、bd
、crit
。每个id有多行(每个id有一行治疗)。这将适用于数据表
或dplyr
解决方案。也许其他人会发布一个示例。欢迎使用stackoverflow!查看应用
函数系列:另外,确保您知道如果为真,您将得到1,如果为假,您将得到0(而不是您在问题中陈述的相反).你说得对,格雷戈,这是另一条路,对不起!谢谢你提醒我!我一定会去看看@Christanks的帮助!
fortunes::fortune(343)