gpt4 book ai didi

rdata:某种方法来遍历数据框的列名?

转载 作者:行者123 更新时间:2023-12-04 10:59:04 28 4
gpt4 key购买 nike

我有大约 30 行代码可以做到这一点(获得 Z 分数):

data$z_col1 <- (data$col1 - mean(data$col1, na.rm = TRUE)) / sd(data$col1, na.rm = TRUE)
data$z_col2 <- (data$col2 - mean(data$col2, na.rm = TRUE)) / sd(data$col2, na.rm = TRUE)
data$z_col3 <- (data$col3 - mean(data$col3, na.rm = TRUE)) / sd(data$col3, na.rm = TRUE)
data$z_col4 <- (data$col4 - mean(data$col4, na.rm = TRUE)) / sd(data$col4, na.rm = TRUE)
data$z_col5 <- (data$col5 - mean(data$col5, na.rm = TRUE)) / sd(data$col5, na.rm = TRUE)

有什么方法,可能使用 apply() 或其他东西,我基本上可以做到(python):

for col in ['col1', 'col2', 'col3']:
data{col} = ... z score code here

感谢 R friend 。

最佳答案

一个 data.frame是一个列表,因此您可以使用 lapply .不要使用 applydata.frame因为这将强制为 matrix .

lapply(data, function(x) (x - mean(x,na.rm = TRUE))/sd(x, na.rm = TRUE))

或者您可以使用 scale它对向量执行此计算。

lapply(data, scale)

您可以翻译 python风格方法直接

for(col in names(data)){
data[[col]] <- scale(data[[col]])
}

请注意,这种方法在 R 中的内存效率不高,因为 [[<.data.frame每次复制整个data.frame。

关于rdata:某种方法来遍历数据框的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097172/

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