Объединить кадры данных с неравными строками и без совпадающих имен столбцов R - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь взять df1 (сводную таблицу) и объединить его в df2 (основная сводная таблица). Это снимок df2, игнорируйте случайные 42, просто ответ на окончательный вопрос. df2 Это пример того, как выглядит df1.

df1

Наконец, у меня есть вектор с именем Dates. Это соответствует датам, которые являются именами столбцов для df2. Я пытаюсь перебрать 20 файлов и собрать сводную статистику этого файла. Затем я хочу ввести эти данные в df2 для постоянного хранения. Мне нужно только войти в заработанный столбец. Я пытался использовать слияние, но так как у них нет общих имен столбцов, я не могу. Моей следующей попыткой было попробовать это. Но это дало ошибку из-за неравных номеров строк.

df2[,paste(Dates[i])] <- cbind(df2,df1)

Тогда я подумал, что, возможно, если бы я указал точное местоположение, это могло бы сработать.

df2[1:length(df1$Earned),Dates[i]] <- df1$Earned

Но это дало и ошибку "Новые столбцы оставят дыры после существующих столбцов". Такпотом я подумал попробовать еще раз, но с помощью cbind.

df2[1:length(df1$Earned),Dates[i]] <- cbind(df2, df1$Earned)
##This gave an error for differing row numbers
df2 <- cbind(df2[1:length(df1$Earned),Dates[i]],df1$earned)
## This "worked" but it replaced all of df2 with df1$earned, so I basically lost the rest of the master table

Буду очень признателен за любые идеи. Спасибо.

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Примерно так может работать:

df1[df1$TreatyYear %in% df2$TreatyYear, Dates] <- df2$Earned

Пример

df <- data.frame(matrix(NA,4,4))
df$X1 <- 1:4

df[df$X1 %in% c(1,2),c("X3","X4")] <- c(1,2)
0 голосов
/ 08 ноября 2019

Единственное решение, которое я нашел до сих пор, это заставить df1 $ Earned в вектор. Затем добавьте вектор к точной длине df2. Затем я могу вставить значения в df2 по конкретному столбцу.

temp_values <- append(df1$Earned,rep(0,(length(df2$TreatyYear)-length(df1$TreatyYear))),after=length(df1$Earned))
df2[,paste(Dates[i])] <- temp_values

Это окольный способ исправить это, но не очень приятный способ. Любые лучшие идеи будут оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...