У меня есть 3 CSV-файла, которые читаются как DF.
df1 -
Code Number
A 12
B 13
C 14
D 15
E 16
F 17
G 18
df2 содержит только код. Эти коды являются обязательными и должны присутствовать в df1. Если какой-либо код в df2 отсутствует в df1, то он должен быть добавлен в df1, а соответствующий ему столбец «Number» должен быть обновлен из df3.
dF2 -
Code
A
B
C
X
Здесь X из df2 отсутствует. Таким образом, он должен быть добавлен в df1, а его номер должен быть извлечен из df3.
df3
Code Number
A 22
B 34
C 56
D 78
X 99
Y 100
Вывод -
df1 -
Code Number
A 12
B 13
C 14
D 15
E 16
F 17
G 18
X 99
У меня есть код, который работает нормально для выполнения этих условий.
Однако я хочу, чтобы все было сделано через функцию.
Моя функция должна делать что-то вроде этого -
If any code present in df2 is missing in df1 then
{
i) get that code from df2
ii) get the number for that code from df3
iii) append that code and number to df1.
} else {
df1<-df1
}
Ниже приведен мой код, который работает нормально.
df4<-merge(df2, df1, by = "code", all = T)
library(dplyr)
df5<-df4 %>%
left_join(df3, by = c("code")) %>%
mutate(count = ifelse(is.na(count.x), count.y, count.x)) %>%
select(-c(count.x, count.y))
df1<-df5
Проблемы с кодом выше -
1) Он обновляет df1 каждый раз, хотя коды отсутствуют. это хорошо, но я думаю, что это может быть улучшено. Я не хочу, чтобы код обновлял df1, если какой-либо код из df2 не пропущен в df1.
2) Я хочу, чтобы все было сделано через функцию.
Спасибо