假設我在數據框中有多個列,它們測量相同的概念,但使用不同的方法(例如,有多種智商測試,學生可以有任何一種他們,或根本沒有)。我想將各種方法合併到一個列中(tidyr的明顯用例)。tidyr ::與缺少數據收集na.rm
如果數據是這樣的:
mydata <- data.frame(ID = 55:64,
age = c(12, 12, 14, 11, 20, 10, 13, 15, 18, 17),
Test1 = c(100, 90, 88, 115, NA, NA, NA, NA, NA, NA),
Test2 = c(NA, NA, NA, NA, 100, 120, NA, NA, NA, NA),
Test3 = c(NA, NA, NA, NA, NA, NA, 110, NA, 85, 150))
我自然要執行這樣的事情(請注意,我用na.rm = TRUE,以沒有很多很多的NA在我的數據設定得到自己行):
library(tidyr)
tests <- gather(mydata, key=IQSource, value=IQValue, c(Test1, Test2, Test3), na.rm = TRUE)
tests
給予我:
ID age IQSource IQValue 1 55 12 Test1 100 2 56 12 Test1 90 3 57 14 Test1 88 4 58 11 Test1 115 15 59 20 Test2 100 16 60 10 Test2 120 27 61 13 Test3 110 29 63 18 Test3 85 30 64 17 Test3 150
問題是我有一個學生(ID = 62),其中任何一個都沒有任何智商分數,我不想丟失她的其他數據(ID和年齡的數據列)。
有沒有辦法在tidyr中區分是的,我想刪除NA,我至少在一列中收集數據,但同時要防止所有的數據丟失採集列NA)
我選擇這個作爲正確的答案b/c簡單,堅持tidyverse,並擴大超出原來的要求。所有給出的答案都很棒,但是很有幫助!謝謝大家! – Joy