我使用下面的代碼將數據集拆分爲兩部分,並在每部分中執行類似的操作。這兩個結果然後合併在一起。我知道我可能會描述拆分應用組合框架,但我無法想象如何簡化下面的代碼。拆分數據集,對每個組應用不同的操作,然後組合
數據集有4個要更新的變量。 4個變量中的每一個都有一個計算新值的公式,每個公式都有一個不同的公式,總共8個公式。
下面的代碼可能會通過某種程度的矢量化得到改善嗎?它似乎比必要的更冗長。我不確定如何爲每個分割半部執行不同的操作(即使用不同的公式),除了下面的方法。
data <- structure(list(site = c(1L, 1L, 1L, 1L, 1L, 1L), plot = 1:6,
C = c(40L, 30L, 10L, 5L, 0L, 0L), E = c(0L, 0L, 0L, 10L,
20L, 45L), M = c(0L, 0L, 0L, 0L, 0L, 10L), P = c(1000L, 900L,
800L, 500L, 200L, 50L), FF = c(1L, 1L, 1L, 0L, 0L, 0L)), .Names = c("site",
"plot", "C", "E", "M", "P", "FF"), class = "data.frame", row.names = c(NA,
-6L))
df1 <- data[data$FF == 1,]
df0 <- data[data$FF == 0,]
df1$C <- df1$C * 1.1
df1$E <- df1$E * 0.9
df1$M <- df1$M * 0.1
df1$P <- df1$P * 1.01
df0$C <- df0$C * 0.8
df0$E <- df0$E * 1.05
df0$M <- df0$M * 1.01
df0$P <- df0$P * 1.01
df.new <- rbind(df1, df0)
等一下,你用plyr和data.table標記了這個,但還沒有探討如何使用它們呢? – Frank 2015-02-05 20:23:26
我確實通過其他SO問題和答案探索plyr和data.table,以及一些我在這裏沒有重現的微弱嘗試。但是,我認爲如果我有足夠的資金與他們一起編寫代碼,這兩種方法似乎都是合適的。我可以發佈非功能性代碼片段。謝謝。 – nofunsally 2015-02-05 21:21:34