首页 > 解决方案 > 如何在R中查找总行值

问题描述

我试图找到列值为 3 或 4 的总行数。话虽如此,第一行只有一个值为 3,所以如果我创建一个新列

currentdx_count1$TotalDiagnoses

名为 TotalDiagnoses 的新列的第一行应该只有 1 的值。我试过了

currentdx_count1$TotalDiagnoses <- rowSums(currentdx_count1[2:32])

这并没有像预期的那样给我我需要的东西,因为它实际上总结了整行。话虽如此,是否有一个现有的功能可以做我想做的事情,或者我必须做一个?我可以在 rowSums 中指定更多以使其按需要工作吗?

感谢您的任何帮助。

编辑:我正在尝试调整我之前在脚本中使用的用于类似目的的方法

findtotal <- endsWith(names(currentdx_count1), 'Current')
findtotal <- lapply(findtotal, `>`, 2)
findtotal <- unlist(findtotal)
currentdx_count1$TotalDiagnoses <- currentdx_count1[c(findtotal)]

我收到一个我以前从未见过的错误(视图中的错误?!)所以我尝试了这个

findtotal <- endsWith(names(currentdx_count1), 'Current')
currentdx_count1$TotalDiagnoses <- currentdx_count1[c(findtotal)]

让我更接近,但它正在分别找到每列的总数,这不是我需要的。我想要一个列来包含每个 SID 的计数。

标签: r

解决方案


您可以将数据框与 3 或 4 的值进行比较,然后用于rowSums计数:

currentdx_count1$TotalDiagnoses <- rowSums(currentdx_count1[-1] == 3 | 
                                           currentdx_count1[-1] == 4)
currentdx_count1$TotalDiagnoses
#[1] 1 2 2 2 1 1 1 1 1 1 1 1 1 2

推荐阅读