R 如何将特定标准的计数变量分成两个子组?
所以我有一个数据集,一列是ID号,一列是年份,另一列是H,D或空。我想计算每个月特定id的H和D的总和。这可能吗 假设我有这3列,这是我希望计数等于的。在每个唯一的ID中,我想统计某个年份的H和DR 如何将特定标准的计数变量分成两个子组?,r,R,所以我有一个数据集,一列是ID号,一列是年份,另一列是H,D或空。我想计算每个月特定id的H和D的总和。这可能吗 假设我有这3列,这是我希望计数等于的。在每个唯一的ID中,我想统计某个年份的H和D ID: YearMon: Naturaleza: Count: 1 012007 H 1 1 012007 D 2 1 022007 NA 1 032
ID: YearMon: Naturaleza: Count:
1 012007 H 1
1 012007 D 2
1 022007 NA
1 032007 H 1
2 012007 H 1
2 022007 Na
2 022007 D 1
2 032007 NA
我们可以尝试使用
data.table
。将“data.frame”转换为“data.table”(setDT(df1)
),按“ID”、“YearMon”分组,我们在指定“i”的逻辑条件后将序列创建为列“Count”(Naturaleza!=”
)
数据
df1当我这样做时,我只得到前5行和最后5行。如何查看完整表格?@swagbag更改数据的默认打印选项。表格为什么要将其打印到控制台?使用View(df1)
而不是options(datatable.print.nrows=Inf)
不要认为在控制台中打印1MM行有任何意义
library(data.table)
setDT(df1)[Naturaleza != '', Count := 1:.N , by = .(ID, YearMon)]
df1
# ID YearMon Naturaleza Count
#1: 1 12007 H 1
#2: 1 12007 D 2
#3: 1 22007 NA
#4: 1 32007 H 1
#5: 2 12007 H 1
#6: 2 22007 NA
#7: 2 22007 D 1
#8: 2 32007 NA
df1 <- structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L),
YearMon = c(12007L,
12007L, 22007L, 32007L, 12007L, 22007L, 22007L, 32007L),
Naturaleza = c("H",
"D", "", "H", "H", "", "D", "")), .Names = c("ID", "YearMon",
"Naturaleza"), row.names = c(NA, -8L), class = "data.frame")