R中按键的数据表的条件和
我有一个数据表'df',有3列。身份证、膳食、时间 每个id有许多行R中按键的数据表的条件和,r,sum,data.table,R,Sum,Data.table,我有一个数据表'df',有3列。身份证、膳食、时间 每个id有许多行 library(data.table) id = c(1,1,2,2,3,3) meal = c(1,1,0,0,1,0) time = c(10,9,12,13,7,15) df <- data.table(id, meal, time) > df id meal time 1: 1 1 10 2: 1 1 9 3: 2 0 12 4: 2 0 13 5:
library(data.table)
id = c(1,1,2,2,3,3)
meal = c(1,1,0,0,1,0)
time = c(10,9,12,13,7,15)
df <- data.table(id, meal, time)
> df
id meal time
1: 1 1 10
2: 1 1 9
3: 2 0 12
4: 2 0 13
5: 3 1 7
6: 3 0 15
我能做什么?您可以尝试以下方法:
df[, is.meal.one := as.integer(meal == 1)]
df[, sum(time * is.meal.one), by = "id"]
这个怎么样
library(data.table)
dt <- data.table(
id = c(1, 1, 2, 2, 3, 3),
meal = c(1, 5, 3, 2, 10, 1),
time = c(2, 10, 15, 5, 5, 2)
)
id meal time
1: 1 1 2
2: 1 5 10
3: 2 3 15
4: 2 2 5
5: 3 10 5
6: 3 1 2
dt[, list(Meal1Time = sum(time[which(meal == 1)])), by=id]
id Meal1Time
1: 1 2
2: 2 0
3: 3 2
库(data.table)
在你的问题中加入a会增加你得到答案的机会。你可以在计算完总数后进行合并。您可以使用ifelse
如果您想要解决方案,请不要忘记将其标记为“正确”。
library(data.table)
dt <- data.table(
id = c(1, 1, 2, 2, 3, 3),
meal = c(1, 5, 3, 2, 10, 1),
time = c(2, 10, 15, 5, 5, 2)
)
id meal time
1: 1 1 2
2: 1 5 10
3: 2 3 15
4: 2 2 5
5: 3 10 5
6: 3 1 2
dt[, list(Meal1Time = sum(time[which(meal == 1)])), by=id]
id Meal1Time
1: 1 2
2: 2 0
3: 3 2