r-对于简单自动化问题的循环或lapply循环


table(one[YEAR == 2002, "PR1", with=FALSE])[c("8151", "8152", "8153",
"0070", "0071", "0072", "0073","0081", "0082", "0083",
"0084", "8154", "8155", "8005", "8006")]

我正在使用data.table软件包进行简单的制表。有人能告诉我如何为2003200420052015做同样的表格吗?这将通过更改YEAR == 2002来实现,但我不知道如何在for循环/apply函数中实现,而不需要复制和粘贴。

我建议如下:

library(data.table)
# I create a data.table that resembles yours
n_lines <- length(rep(2002:2015,4))
one <- data.table::data.table("YEAR" = rep(2002:2015,4),
"PR1" = c(rep("8151",n_lines/4), rep("8153",n_lines/4),
rep("8154",n_lines/4), rep("8158",n_lines/4)))
# Then I use .N by values of PR1 and YEAR and select only the few values of PR1 that interest me as in your code (but I only selected 8151 and 8153 in this example):
one[,.N,by = .(PR1,YEAR)][PR1 %in% c("8151", "8153")]

结果的第一行是:

PR1 YEAR N
1: 8151 2002 1
2: 8151 2003 1
3: 8151 2004 1
4: 8151 2005 1
5: 8151 2006 1
6: 8151 2007 1

您可以在变量N.中获得每个特定年份的每个PR1值的计数

希望它能帮助

最新更新