У меня есть таблица с 5 столбцами. Мне нужно разделить строки, которые имеют более одного значения в столбцах a, b, c, d, на отдельную строку и умножить значение на общее значение.
ввод:
data = read_delim("a,b,c,d,total\n1,NA,NA,NA,10\nNA,0.5,0.5,NA,20\n0.2,0.3,NA,0.5,30\n", delim=",")
data
a b c d total
1 1 NA NA NA 10
2 NA 0.5 0.5 NA 20
3 0.2 0.3 NA 0.5 30
желаемый вывод:
desired_output = read_delim("a,b,c,d,total\n1,NA,NA,NA,10\nNA,0.5,NA,NA,10\nNA,NA,0.5,NA,10\n0.2,NA,NA,NA,6\nNA,0.3,NA,NA,9\n NA,NA,NA,0.5,15\n", delim=",")
desired_output
a b c d total
1 1 NA NA NA 10
2 NA 0.5 NA NA 10
3 NA NA 0.5 NA 10
4 0.2 NA NA NA 6
5 NA 0.3 NA NA 9
6 NA NA NA 0.5 15
фильтровать строки, которые нужно разделить
combined <- data %>% dplyr::filter(rowSums(!is.na(.[,1:4]))>1)
combined
a b c d total
1 NA 0.5 0.5 NA 20
2 0.2 0.3 NA 0.5 30