Как сопоставить короткий список (# 1) с большим списком (# 2) и получить список длиной # 1 с данными из списка # 2 - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над проектом, в котором у меня есть два набора данных, один из 2019 года и один из 2015 года. Я создал подгруппу данных 2019 года и хотел бы сопоставить ее с данными 2015 года на основе адреса.

Я пытался использовать sapply и lapply, однако я не смог заставить его работать, так как списки имеют разную длину.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019
  1. слияние лучше всего работает с фреймами данных, вы упомянули, что у вас есть списки.Сначала проверьте структуру ваших данных, используя str(dataframe) Если у вас есть список, преобразуйте его в кадры данных, вы можете использовать что-то вроде этого: list_to_dataframe <- as.dataframe(list)
  2. Получив кадры данных, используйте функцию слияния.Рабочий пример приведен ниже:
dataframe_2019 <- data.frame(address = c("A", "B", "C", "D"), year = 
rep("2019"))

dataframe_2015 <- data.frame(address = c("A", "X", "Z", "B", "C", "G", "D", 
"Y"), year = rep("2015"))


new_dataframe <- merge(dataframe_2015, dataframe_2019, by = "address")

new_dataframe
  address year.x year.y
1       A   2015   2019
2       B   2015   2019
3       C   2015   2019
4       D   2015   2019
0 голосов
/ 19 сентября 2019

Вы пробовали использовать merge?

df.2019 <- data.frame(year = rep(2019, 6), address = c("a1", "a2", "a3", "a4", "a5", "a6"))
df.2015 <- data.frame(year = rep(2015, 6), address = c("a10", "a2", "a3", "a4", "a15", "a16"))
df <- merge(df.2019, df.2015, by = "address"); df
> df <- merge(df.2019, df.2015, by = "address"); df
  address year.x year.y
1      a2   2019   2015
2      a3   2019   2015
3      a4   2019   2015
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...