gpt4 book ai didi

r - 如何使用 data.table 将表格应用于多个列?

转载 作者:行者123 更新时间:2023-12-02 06:13:18 26 4
gpt4 key购买 nike

假设我有一个 data.table

prueba <- data.table(aa=1:7,
bb=c(1,2,NA,NA,3,1,1),
cc=c(1,2,NA,NA,3,1,1),
YEAR=c(1,1,1,2,2,2,2))

我想从给定的集合中获取每一列的缺失表,例如 aa、bb 和 cc。

结果应该是这样的:

    aa   bb   cc
1: 0 2 2
0: 7 0 0

或其转置形式或带有其他标签。

我试过

prueba[,lapply(.SD, function(x) as.list(  table(
factor(is.na(x), levels=c("0","1"))))),
.SDcols=c("aa","bb", "cc")]

但我得到的是这个:

    aa   bb   cc
1: 7 5 5
0: 7 2 2

我认为这与表格丢弃未使用的级别这一事实有关。但是我尝试使用 xtabs 和各种黑客攻击都没有成功。

我可以得到一些丑陋的东西

sapply(c("aa","bb","cc"), function(x) prueba[,as.list(
table(is.na(get(x))))])

最佳答案

也许使用table:

prueba[, table(is.na(.SD), names(.SD)[col(.SD)]), .SDcols=aa:cc]

aa bb cc
FALSE 7 5 5
TRUE 0 2 2

这实际上是将其视为矩阵。

一些备选方案:

prueba[, table(is.na(.SD), rep(names(.SD), each=.N)), .SDcols=aa:cc]

melt(prueba[, aa:cc])[, table(is.na(value), variable)]

关于r - 如何使用 data.table 将表格应用于多个列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54224732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com