【问题标题】:Select repeated cases from a variable从变量中选择重复的案例
【发布时间】:2020-10-20 15:41:54
【问题描述】:

我正在使用一个名为 Visitas 的数据库。它是来自医院的访问数据库,其中变量codeep 表示患者的代码。由于患者去医院频繁,患者的措施不止一种。他们有多个度量的变量称为result,每次他们在result 变量中得到结果时,都会在变量codeep 中使用相同的代码患者进行编码。

我想要的是从每个患者那里获取 codeep 变量中的所有位置,以便从变量 result 中为每个患者获取平均值。

例如,我只为一名患者展示我想要的东西。我使用了which(),作为回报,我得到了这个代码在codeep 变量中重复的位置的向量。现在我想为所有的病人做这个,自动化。

为了得到这个,我尝试了一个循环,但它不起作用,但也许是我的代码。

which(Visitas[,'codeep'] == 6208)

# One loop

for (i in Visitas[, 'codeep']) {
    Visitas_TRT[i] <- which(Visitas$codeep[i] == Visitas$codeep)
} 

# Double loop

for (i in Visitas[, 'codeep']) {
  for (j in Visitas[, 'codeep']) {
    Visitas_TRT <- which(Visitas$codeep[i] == Visitas$codeep[j])
  }
} 

有什么想法吗?

This is head the dataset

【问题讨论】:

    标签: r select measure


    【解决方案1】:

    您似乎正在寻找ave,您可以使用它创建一个变量,其中每个codeepresult 中的mean 都是codeep

    Visitas <- transform(Visitas, result.M=ave(result, codeep, FUN=mean))
    Visitas
    #    codeep today result result.M
    # 1       1     1    6.4 5.866667
    # 2       2     1    4.4 6.066667
    # 3       3     1    5.4 4.633333
    # 4       4     1    5.6 5.766667
    # 5       5     1    5.4 5.066667
    # 6       1     2    4.9 5.866667
    # 7       2     2    6.5 6.066667
    # 8       3     2    4.9 4.633333
    # 9       4     2    7.0 5.766667
    # 10      5     2    4.9 5.066667
    # 11      1     3    6.3 5.866667
    # 12      2     3    7.3 6.066667
    # 13      3     3    3.6 4.633333
    # 14      4     3    4.7 5.766667
    # 15      5     3    4.9 5.066667
    

    数据:

    Visitas <- expand.grid(codeep=1:5, today=1:3)
    set.seed(42)
    Visitas$result <- round(rnorm(nrow(Visitas), 5), 1)
    

    【讨论】:

    • 是的,我认为它有效,它很简单,但我不知道这个功能。太感谢了! @jay.sf
    • 对不起,你在这里写的没问题,但我想从每个病人那里得到所有的值,除了得到平均值。因为我必须计算患者在极限之间的次数的百分比,而不仅仅是平均值。你知道我怎么能得到这个吗? @jay.sf
    • @CarlosPascualBosch 可以在ave 中定义任何函数,也可以在FUN=function(x) sum(x &gt; L1 &amp; x &lt; L2) 等匿名函数中定义。这对你有帮助吗?
    • 是的,这就是我现在正在尝试的。我希望我能得到它,再次感谢你@jay.sf
    • 不客气@CarlosPascualBosch!如果它不起作用,请回来报告。请考虑mark answer as accepted
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多