我很好奇如何在R中創建另一個數據集,這將存儲因子變量的最大值並匹配該最大值的觀測值。存儲因子變量的最大值並匹配該最大值的觀測值
這裏是數據集中的只用4個受試者的片段和代碼:
library(data.table) my.data <- structure(list(Subject = c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 4L), Supervisor = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Emmi", "Pauli"), class = "factor"), Time = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 2L, 3L, 3L, 3L), .Label = c("01.02.2016 09:45", "01.02.2016 09:48", "01.03.2016 09:55"), class = "factor"), Trials = c(1L, 2L, 3L, 4L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 4L), Force = c(403.8, 464.6, 567.6, 572.9, 572.4, NA, 533.1, 547, 532.6, 503.8,464.6, 367.6, 372.9), ForceProduction = c(1073, 1149.6, 1944.7, 1906.4, 2260.9, NA, 2634.5, 2471.6, 1187.9, 1073, 1149.6,1944.7, 1906.4)), .Names = c("Subject", "Supervisor", "Time", "Trials", "Force", "ForceProduction"), class = "data.frame", row.names = c(NA, -13L))
DT=as.data.table(my.data) new.data <- DT[,.SD[which.max(Force)],by=Trials]
每個受試者確實2-4試驗。我需要根據力量爲給定科目在所有試驗中選擇最大值。所以我對Force列的最大值感興趣。所有其他與這個最大力量有關的觀察應該被保留,那些與最大力量不一致的觀察應該被忽略。
代碼結果很奇怪。只爲3個主題,忽略其餘。而不是最好的試用。但我認爲我在某個地方完全錯了。
你能指點我一個更好的解決方案嗎?
請提供一個最小的,可重現的例子,它可以很容易地複製和粘貼到R會話中。 [這裏有一些提示](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)關於如何做到這一點。 –
感謝羅馬,做過 –