15

dfから他の列を「除外」せずに、データフレームの特定の列に関数を適用する方法を学びたいです。たとえば、特定の列に1000を掛けて、他の列はそのままにしておきたいと思います。

たとえば、次のようにsapply関数を使用します。

    a<-as.data.frame(sapply(table.xy[,1], function(x){x*1000}))

最初の列に1000を掛けたものの、操作で使用しなかった他の列がない新しいデータフレームを取得します。だから私の試みはこのようにすることでした:

    a<-as.data.frame(sapply(table.xy, function(x) if (colnames=="columnA") {x/1000} else {x}))

しかし、これは機能しませんでした。

私の回避策は、両方のデータフレームにIDを含む別の行を指定し、後で古いデータフレームを新しく作成されたデータフレームとマージして完全なデータフレームを取得することでした。しかし、もっと良い解決策があるに違いないと思います。ではない?

4

3 に答える 3

6

1 つまたはいくつかの列に対してのみ計算を実行する場合は、transform手動でインデックスを使用するか、単純にインデックスを作成できます。

# with transfrom:
df <- data.frame(A = 1:10, B = 1:10)
df <- transform(df, A = A*1000)

# Manually:
df <- data.frame(A = 1:10, B = 1:10)
df$A <- df$A * 1000
于 2012-11-15T13:07:04.350 に答える