【发布时间】:2022-01-18 16:14:51
【问题描述】:
我知道如何函数和循环,我想将它们与数据表对象结合起来,目的是进行探索性数据分析。
我做了这个函数:
aed <- function(x) {
mean <- mean(x, na.rm=TRUE)
desvtip <- sd(x, na.rm=TRUE)
qss <- quantile(x, probs=c(0, 0.01, 0.05, 0.25, 0.50, 0.75, 0.95, 0.99, 1), na.rm=TRUE)
names(qss) <- NULL
min <- qss[1]
p1 <- qss[2]
p5 <- qss[3]
p25 <- qss[4]
median <- qss[5]
p75 <- qss[6]
p95 <- qss[7]
p99 <- qss[8]
max <- qss[9]
ric <- p75-p25
return( c(mean=mean, st=desvtip, min=min, p1=p1, p5=p5, p25=p25, p50=median,
p75=p75, p95=p95,p99=p99, max=max,rangic=ric))
}
我有一个这样的数据表(称为 Master):
| V1 | V2 | V3 | V4 |
|---|---|---|---|
| 532.215 | float_value | float_value | float_value |
| 123.258 | float_value | float_value | float_value |
| 0.025 | float_value | float_value | float_value |
每一列都是浮点型。
所以,我想用一个循环来处理我的函数的每一列,并制作一个像这样的表格结果:
| Column_Name | Mean | st | Min | Max | ... |
|---|---|---|---|---|---|
| V1 | mean of V1 | st of V1 | ... | ... | ... |
| V2 | mean of V2 | st of V2 | ... | ... | ... |
| V3 | mean of V3 | st of V3 | ... | ... | ... |
| V4 | mean of V4 | st of V4 | ... | ... | ... |
我试过这样循环。
results <- NULL
for(i in 1:ncol(Master)) { # for-loop over columns
col_name <- colnames(Master)[i] #select column name
analysis <- aed(Master[,paste0(colnames(Master)[i])]) #use my function
r_row <- cbind(col_name, analysis) #combine column name and resuts of aed in a row
results <- rbind(results, r_row) # combine every row in a table
}
我不明白的部分是为什么 Master[,paste0(colnames(Master)[i])] when i = 1 与 Master[,"V1"] 不一样。
控制台返回:
> Master[,paste0(colnames(Master)[i])] # when i =1
[1] "V1"
> Master[,"V1"]
V1
1: 0
2: 2
3: 2
4: 0
5: 0
6: 0
有人可以帮帮我吗?如果您有更好的想法,则无需使用我的循环,但如果有人可以解释为什么 Master[,paste0(colnames(Master)[i])] 不起作用,我会非常感激。
【问题讨论】:
-
仅供参考,标签推荐系统不完善。在发布您的问题之前,请检查建议的标签。在这种情况下,您有 datatable 模棱两可,但在其描述中明确表示 “对于 data.table R 包,请使用 data.table”; rstudio 标记也仅用于有关 IDE 的问题,其描述为 “请勿将此标记用于一般 R 编程问题”。
标签: r loops data.table