3

これだけを行う約 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フレンズ。

4

3 に答える 3

2

私はあなたが正しいと思います.apply()がここに行く方法かもしれません.

例えば:

data <- array(1:20, dim=c(4, 5))

data.zscores <- apply(data, 2, function(x)
    (x-mean(x, na.rm = TRUE))/sd(x, na.rm = TRUE))

関数 apply() は、最初の引数として行列または配列を取ります。「2」は、関数が反復される次元を指します。この場合は列です。行ごとに実行したい場合は、「1」を使用します。最後に、各列に適用する関数があります。詳細については、?apply を参照してください。

于 2013-07-10T20:54:48.377 に答える
0

これを確認して、データフレームを反復処理して NA 行を認識します

for(i in names(houseDF)){
  print(i)
  print(nrow(houseDF[is.na(houseDF[i]),]))
  print("---------------------")
}
于 2017-10-29T13:16:12.837 に答える