Спасибо за ответы на мой предыдущий вопрос, но мне нужно обновить его, поскольку решения не работают с моим реальным примером, т. Е. С фреймом данных 3170x11.
Позвольте мне кратко повторить его. У меня есть фрейм данных 3170X11, заполненный терминами «Нормал», «Делезиони» или NA. Я хотел бы объединить результаты столбца в новые столбцы, сообщая о типе сообщаемого термина, который действительно является «нормальским», «делезионским» или «NA». Если 'Normale' и 'NA' присутствуют в одном ряду, следует указать 'Normale'. Если «Delezioni» и «NA» присутствуют в одном ряду, следует указать «Delezioni». В случае присутствия только «NA» следует указать «NA». Однако, если присутствуют и «Нормали», и «Делезиони», следует указать «Ошибка». Акрун и другие сообщили о хорошем решении ( Объединение многих столбцов в один столбец ), но, как я уже сказал, не работает, когда все становится больше:
library (RCurl)
a <- getURL('http://download1645.mediafire.com/pp9z3okh5tgg/96px8ophovxrxe9/example.tab')
df2 <- read.table(text=a,header=TRUE, sep = "\t")
df2 <- data.frame(lapply(df2, as.character), stringsAsFactors=FALSE) #converts from factor to character
res <- df2 %>%
mutate_if(~ all(is.na(.)) && is.logical(.), ~ NA_character_) %>%
transmute(Summary = case_when(rowSums(!is.na(.)) > 1 ~ "Error",
TRUE ~ coalesce(!!! .)))
res содержит несколько ошибок , Например, первые строки должны быть:
Summary
1 Normale
2 <NA>
3 <NA>
4 <NA>
5 Normale
6 Normale
Вместо них:
> head (res)
Summary
1 Error
2 <NA>
3 <NA>
4 <NA>
5 Error
6 Error
Спасибо