_a我正在嘗試轉換數據集。我想實現的是,如果Intensitat
= 1 - R創建一個新列 - 強度1a - 並寫入damage_a
的值。如果Intensitat
= 2 - R會創建另一個新列 - 強度2a - 並寫入damage_a
的值。最後,如果Intensitat = 3,則R會執行新列 - 強度3a - 並寫入damage_a
的值。 (它總是寫入對應於與強度指示符相同的行的damage_x的值)。從長數據表到寬數據表
然後我將運行相同的過程:從指示符變量創建3列 - 指標值的每列和每列中的值使用damage_b
。
最後一樣,但使用damage_c
的值。
type <- sample(seq(from = 1, to = 5, by = 1), size = 50, replace = TRUE)
type
intensity <- sample(seq(from = 1, to = 3, by = 1), size = 50, replace = TRUE)
intensity
damage_a <- sample(seq(from = 1, to = 50, by = 1), size = 50, replace = TRUE)
damage_b <- sample(seq(from = 1, to = 200, by = 1), size = 50, replace = TRUE)
damage_c <- sample(seq(from = 1, to = 500, by = 1), size = 50, replace = TRUE)
dat <- data.frame(type, intensity, damage_a, damage_b, damage_c)
# want to evaluate if the difference in mean between different damages
dat1 <- subset(dat, select = c(type, intensity, damage_a))
dat2 <- subset(dat, select = c(type, intensity, damage_b))
dat3 <- subset(dat, select = c(type, intensity, damage_c))
對你來說這看起來像是一件非常容易的事,但我一直堅持了兩天。我已經嘗試過應用於tidyr函數,ifelse命令等,但從未獲得我所需要的東西。任何意見/想法都非常受歡迎。謝謝。
編輯:
我設法改變格式,如果與這個小方便的功能表。
df.out <- unstack(dat, damage_a ~ intensity)
現在的問題是,我得到長度不同的列表。我如何將這些列表組合到ona數據框中?
也許'庫(data.table); dcast(setDT(DAT),型+ ROWID(類型,強度)〜 paste0(「intensity_」,intensity),value.var = c('damage_a','damage_b','damage_c'))' – akrun
是的,但爲什麼在你的代碼中有一個'type_f'變量?你能稍微解釋一下這些命令的作用嗎? – Danka
我發表了評論作爲一些解釋的解決方案 – akrun