根据 R 中的某些条件计算值?
Counting values based on certain conditions in R?
我有一个数据集,我正在尝试计算每位患者拥有的代码数量,以及每位患者拥有的感兴趣代码数量。
假设我下面有这个 table,我感兴趣的代码是 26。
patient code
1 25
1 26
1 39
1 26
1 86
2 26
2 24
2 89
3 56
3 45
3 26
3 89
4 56
4 25
4 66
4 56
患者 1 总代码:总代码 5 个,感兴趣代码 2 个
患者 2 总代码:总代码 3,感兴趣代码 1
患者 3 总代码:总代码 4,感兴趣代码 1
患者 4 总代码:总代码 4,感兴趣代码 0
我如何在 R 中执行此操作?谢谢!
这是一个 tidyverse
方法。
首先您需要 group_by(patient)
以便 R
计算 patient
作为一个组。然后用summarise()
计算出每个患者中代码n()
的个数,同时统计每个患者26
的出现次数(sum(code == 26)
)。
library(tidyverse)
df %>% group_by(patient) %>%
summarize(Total_codes = n(),
Codes_of_interest = sum(code == 26))
# A tibble: 4 x 3
patient Total_codes Codes_of_interest
<int> <int> <int>
1 1 5 2
2 2 3 1
3 3 4 1
4 4 4 0
假设你有一个名为 dt
的 data.table
有变量 patient
和 code
.
library(data.table)
dt <- data.table(patient = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L), code = c(25L, 26L, 39L, 26L, 86L,
26L, 24L, 89L, 56L, 45L, 26L, 89L, 56L, 25L, 66L, 56L))
with(dt[code == 26], ftable(patient))
这是输出
patient 1 2 3
2 1 1
这是一个 data.table
方法:
library(data.table)
setDT(dt)[ , list(cases = .N, interest = sum(code == 26)), by=patient]
输出
patient cases interest
1: 1 5 2
2: 2 3 1
3: 3 4 1
4: 4 4 0
数据
dt <- structure(list(patient = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L), code = c(25L, 26L, 39L, 26L, 86L,
26L, 24L, 89L, 56L, 45L, 26L, 89L, 56L, 25L, 66L, 56L)), class = "data.frame", row.names = c(NA,
-16L))
我有一个数据集,我正在尝试计算每位患者拥有的代码数量,以及每位患者拥有的感兴趣代码数量。
假设我下面有这个 table,我感兴趣的代码是 26。
patient code
1 25
1 26
1 39
1 26
1 86
2 26
2 24
2 89
3 56
3 45
3 26
3 89
4 56
4 25
4 66
4 56
患者 1 总代码:总代码 5 个,感兴趣代码 2 个
患者 2 总代码:总代码 3,感兴趣代码 1
患者 3 总代码:总代码 4,感兴趣代码 1
患者 4 总代码:总代码 4,感兴趣代码 0
我如何在 R 中执行此操作?谢谢!
这是一个 tidyverse
方法。
首先您需要 group_by(patient)
以便 R
计算 patient
作为一个组。然后用summarise()
计算出每个患者中代码n()
的个数,同时统计每个患者26
的出现次数(sum(code == 26)
)。
library(tidyverse)
df %>% group_by(patient) %>%
summarize(Total_codes = n(),
Codes_of_interest = sum(code == 26))
# A tibble: 4 x 3
patient Total_codes Codes_of_interest
<int> <int> <int>
1 1 5 2
2 2 3 1
3 3 4 1
4 4 4 0
假设你有一个名为 dt
的 data.table
有变量 patient
和 code
.
library(data.table)
dt <- data.table(patient = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L), code = c(25L, 26L, 39L, 26L, 86L,
26L, 24L, 89L, 56L, 45L, 26L, 89L, 56L, 25L, 66L, 56L))
with(dt[code == 26], ftable(patient))
这是输出
patient 1 2 3
2 1 1
这是一个 data.table
方法:
library(data.table)
setDT(dt)[ , list(cases = .N, interest = sum(code == 26)), by=patient]
输出
patient cases interest
1: 1 5 2
2: 2 3 1
3: 3 4 1
4: 4 4 0
数据
dt <- structure(list(patient = c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 4L, 4L, 4L, 4L), code = c(25L, 26L, 39L, 26L, 86L,
26L, 24L, 89L, 56L, 45L, 26L, 89L, 56L, 25L, 66L, 56L)), class = "data.frame", row.names = c(NA,
-16L))