【问题标题】:Can I use the apply family to get a stat on each column of many dataframes我可以使用 apply 系列来获取许多数据帧的每一列的统计信息吗
【发布时间】:2018-08-28 08:57:37
【问题描述】:

早上好 Stack Overflow,

可以使用(s)apply 函数来获取有关数据框列的一些统计信息(无论如何)。我想知道是否可以使用apply 系列为每个不同的数据框获取每列的此类统计信息?

每列缺失值的数量(1 个数据框):

dataf <- data.frame(list(a = 1:3, b = c(NA, 3:4)), row.names = c("x","y","z"), stringsAsFactors = FALSE)
sapply(dataf, function(x) {sum(is.na(x))})

我曾考虑过制作一个数据框列表,但统计信息随后汇总在列表的元素(即数据框)上,尽管我希望它在列上进行计算。有什么想法吗?

祝你有美好的一天,

安东尼

【问题讨论】:

  • lapply(list, function(x) sapply(x, function(y) sum(is.na(y)))) 可能值得一试
  • @missuse 谢谢!我还有很多东西要学xD!祝你有美好的一天!
  • @missuse 考虑到这个多数据集问题,您如何将 NA 替换为 0?我已经尝试过你的逻辑,但它不适用于代码:lapply(li, function(dataf) sapply(dataf, function(col) { mutate_all(col, funs(ifelse(is.na(.), 0, .))) }))
  • 试试:lapply(li, function(x) sapply(x, function(y) ifelse(is.na(y), 0, y)))lapply(li, function(x) mutate_all(x, funs(ifelse(is.na(.), 0, .))))
  • 我会lapply(li, function(x){x[is.na(x)] &lt;- 0; return(x);})

标签: r dataframe apply sapply


【解决方案1】:

一般来说,如果您想用它们做类似的事情,最好将数据框保存在一个列表中。有关更多信息,请参阅 @gregor 在此问题中的出色回答 How do I make a list of data frames?

@missuse 的评论是正确的。在您的示例上进行了测试:

dataf <- data.frame(list(a = 1:3, b = c(NA, 3:4)), row.names = c("x","y","z"), stringsAsFactors = FALSE)
dataf2 <- data.frame(list(a = 1:3, b = c(NA, 3:4)), row.names = c("x","y","z"), stringsAsFactors = FALSE)

li <- list(dataf,dataf2)

lapply(li, function(x) sapply(x, function(y) sum(is.na(y))))
> lapply(li, function(x) sapply(x, function(y) sum(is.na(y))))
[[1]]
a b 
0 1 

[[2]]
a b 
0 1 

【讨论】:

  • 谢谢!我以后会考虑的;)。祝你有美好的一天!
  • 考虑到这个多数据集问题,您如何将 NA 替换为 0?我已经尝试过你的逻辑,但它不适用于代码:lapply(li, function(dataf) sapply(dataf, function(col) { mutate_all(col, funs(ifelse(is.na(.), 0, .))) }))
  • 如果你想用零替换所有 NA,你可以 1)创建一个函数,用预期值(在本例中为 0)fill_na &lt;- function(x){ x[is.na(x)] &lt;- 0 return(x) } 替换 NA 和 2)将其应用于所有数据帧在您的列表中:lapply(li, fill_na)
猜你喜欢
  • 2012-02-27
  • 1970-01-01
  • 2021-11-30
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-03
  • 2017-12-24
相关资源
最近更新 更多