我試圖轉換一段時間內每個人都有多個觀察值的數據集。例如,在此期間,人1可能肥胖而不肥胖(只是超重)。下面是從一個人1個例子:用R或組中的ID替換特定列的最大值
ID Obese Overweight
1 NA NA
1 NA NA
1 0 1
1 1 0
1 0 0
2 NA 0
2 0 1
2 0 NA
我需要爲「1」,如果1出現在都在此列,跨列指定數量(有700+替換每列中的值;例如c(5:749))BY「ID」。理想情況下,輸出將如下所示:
ID Obese Overweight
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
2 0 1
2 0 1
2 0 1
首先我將所有的NAs都更改爲0;然後,我認爲我可以沿每列取最大值並替換(通過ID),但無法找到有關如何通過組(「ID」)和給定的一組列(即c(5:749) )。此外,我不想創建新列,而只是替換數據框中已有列中的值。
我得到它可以對單變量的工作,但不能轉化爲循環這要經過一組變量...
而且我覺得一個循環的時間太長給出數據大小。還有其他建議嗎?提前致謝。下面是一個例子數據集:
dat <- as.data.frame(matrix(NA,18))
dat$id <- as.character(c(1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3))
dat$ob1 <- as.character(c(NA,NA,0,1,0,NA,0,1,0,0,0,0,0,0,0,0,0,0))
dat$ob2 <- as.character(c(NA,NA,1,0,0,NA,0,0,1,0,0,0,0,1,0,0,0,0))
dat <- dat[,-1]
至於鏈接使用「lapply」分頁,它似乎並沒有在所有的值都是NA(或0)爲某一個人的情況下工作。在這種情況下,它似乎用其他列中的值「填充」/插值(從未出現在原始數據集的列中);當一個二進制變量被推斷/替換爲一個連續值時,這顯然被發現。任何想法爲什麼這可能會發生?
在鏈接的問題,你可以看到在評論中更多的選擇。 – Frank
感謝您鏈接此頁面;它似乎是我正在尋找,但我仍然遇到一個錯誤。例如,在給定個體的所有值都是NA的列中,它似乎用從其他列開始的值「填充」/插值(從未出現在原始數據集的列中);當一個二進制變量被推斷/替換爲一個連續值時,這顯然被發現。任何想法爲什麼這可能會發生? – mgianfra
好的,也許你可以發佈一個例子來說明這一點?我不太瞭解所描述的情況。 – Frank