r - 在 r 中具有 NA 值的数据帧列表上计算 Z 分数
问题描述
我有一个包含 NA 值的数据框列表。我正在尝试向每个列表添加一个新列,该列表从现有列之一滚动计算 zscore。
说我的清单是:
df1<- data.frame(a= c(1, 2, NA, NA, 10, NA, 5, NA), b= c(4, NA, 4, NA, NA, 5, 7, NA))
df2<- data.frame(a= c(1, 2, NA, NA, 10, NA, 5, NA), b= c(4, NA, 4, NA, NA, 5, 7, NA))
mylist<- list(df1, df2)
我运行它的代码是
for (j in 1:length(mylist)){
for(i in 1:length(mylist[[j]]))
mylist[[j]]$z_score[i]<- scale(mylist[[j]]$b[1:i])
}
然而,这会产生 NA 结果。关于我可能做错的任何想法?
解决方案
这是你想要的?
mylist.z <- lapply(mylist, scale)
n <- length(mylist)
for(i in seq(n)) {colnames(mylist.z[[i]]) <- c("az", "bz")}
mylist.2 <- lapply(seq(n), function(i) cbind(mylist[[i]], mylist.z[[i]]))
mylist.2
# [[1]]
# a b az bz
# 1 1 4 -0.8660254 -0.7071068
# 2 2 NA -0.6185896 NA
# 3 NA 4 NA -0.7071068
# 4 NA NA NA NA
# 5 10 NA 1.3608971 NA
# 6 NA 5 NA 0.0000000
# 7 5 7 0.1237179 1.4142136
# 8 NA NA NA NA
#
# [[2]]
# a b az bz
# 1 1 4 -0.8660254 -0.7071068
# 2 2 NA -0.6185896 NA
# 3 NA 4 NA -0.7071068
# 4 NA NA NA NA
# 5 10 NA 1.3608971 NA
# 6 NA 5 NA 0.0000000
# 7 5 7 0.1237179 1.4142136
# 8 NA NA NA NA
推荐阅读
- flutter - 保存图像和视频以供离线访问
- vba - MS-Access 使用 VBA 将可变行值动态转换为可变列值
- php - 如何使用单个 PDO 查询选择这两个表
- database - Firestore 多对多关系 - 如何更新数据?
- linux-from-scratch - 需要有关 LFS-7.10 Pass2 binutils 配置错误的帮助
- php - 在单个域中配置多个 onesignal 通知
- flutter - Flutter MatrixGestureDetector - 最小和最大比例
- javascript - 如何强制测试套件首先运行并在失败时退出整个 Jest 执行?
- arrays - 在c中使用通用快速排序对char**数组进行排序
- css - 为单选按钮文本提供 nowrap