Мне нужно объединить некоторые столбцы для этих нескольких идентификаторов и просто использовать значения из первого списка идентификаторов для других. Например, здесь я просто хочу объединить столбец «расходы» и столбец сердечного приступа, чтобы просто сказать, был ли у них сердечный приступ. Затем я хочу удалить повторяющиеся идентификаторы # и просто сохранить значения из первого списка для других столбцов:
df <- read.table(text =
"ID Age Gender heartattack spending
1 24 f 0 140
2 24 m na 123
2 24 m 1 58
2 24 m 0 na
3 85 f 1 170
4 45 m na 204", header=TRUE)
Что мне нужно:
df2 <- read.table(text =
"ID Age Gender ever_heartattack all_spending
1 24 f 0 140
2 24 m 1 181
3 85 f 1 170
4 45 m na 204", header=TRUE)
Я пробовал group_by с помощью transmute () и sum () следующим образом:
df$heartattack = as.numeric(as.character(df$heartattack))
df$spending = as.numeric(as.character(df$spending))
library(dplyr)
df = df %>% group_by(ID) %>% transmute(ever_heartattack = sum(heartattack, na.rm = T), all_spending = sum(spending, na.rm=T))
Но это удаляет все остальные столбцы! Кроме того, он превращает значения NA в нули ... например, я все еще хочу, чтобы значение "NA" было значением для идентификатора пациента # 4, я не хочу изменять данные, чтобы сказать, что у них никогда не было сердечного приступа!
> print(dfa) #This doesn't at all match df2 :(
ID ever_heartattack all_spending
1 1 0 140
2 2 1 181
3 2 1 181
4 2 1 181
5 3 1 170
6 4 0 204