我目前正在开展一个项目,我们正在查看国家/地区年份的数据。这就是每个国家和年份组合都是一个独特的案例。我想创建一个遍历每个变量的循环,每年运行计数。我现在可以通过在R中使用data.table为每个单独的变量执行此操作。例如:
DT[, list(total = sum(v_23_27 !=99999)), by = ID_year]'
任何建议都将不胜感激。
编辑:
我正在寻找非NA案例以检查数据集的覆盖范围。以下示例数据:
Year Country Var1 Var2
2001 Canada NA NA
2001 USA .32 NA
2001 Sweden NA 1
2002 Canada .1 NA
2002 USA .32 1
2002 Sweden NA 1
答案 0 :(得分:0)
您可以使用dplyr
执行此操作。这是一个每年计算每列非NA值的版本:
# make toy data
set.seed(20912)
df <- data.frame(country = c(rep("A", 5), rep("B", 5)),
year = rep(seq(1995,1999), 2),
var1 = rnorm(10, 100, 20),
var2 = sample(c("lo", "hi", NA), 10, replace = TRUE),
stringsAsFactors = FALSE)
library(dplyr)
# create function for counting non-NA values
noNAsum <- function(x) { sum(!is.na(x)) }
# group the data by year and then apply the function to each column of interest
df %>%
group_by(year) %>%
summarise_each(funs(noNAsum), var1:var2)
# A tibble: 5 × 3
year var1 var2
<int> <int> <int>
1 1995 2 1
2 1996 2 2
3 1997 2 0
4 1998 2 2
5 1999 2 2
如果要对不同的列使用不同的规则,可以将调用扩展为summarize
以适应这种情况,例如:
df %>%
group_by(year) %>%
summarise(var1 = sum(var1 > 100),
var2 = sum(!is.na(var2)))
# A tibble: 5 × 3
year var1 var2
<int> <int> <int>
1 1995 1 1
2 1996 1 2
3 1997 0 0
4 1998 1 2
5 1999 0 2
答案 1 :(得分:0)
有一个软件包可以帮助您查看数据集http://www.bytefold.com/generate-metadata-for-a-dataset-in-r/
的元数据你可以尝试这个,它提供了有关你的数据集的基本信息。