Добавление столбца с разным количеством строк - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть два фрейма данных, которые я хочу объединить, но я не уверен, как бы, потому что у одного из них было разное количество столбцов.Первый фрейм данных:

Species Name                 Country           Lat         Lon  
Corynosoma hannae            New Zealand     -46.5000     170.3000
Polymorphus brevis           Mexico           19.4206    -102.2060
Acanthocephala terminalis    United States    38.1806    -83.4505
Polymorphus brevis           Mexico           30.5603    -115.9420
Polymorphus brevis           Mexico           19.6728    -99.7078
Polymorphus brevis           Mexico           19.6833    -101.8830
Polymorphus brevis           Mexico           30.5603    -115.9420
Polymorphus brevis           Mexico           30.5603    -115.9420

Второй фрейм данных:

Species Name                 Country          Number of Records
Corynosoma hannae            New Zealand              3
Polymorphus brevis           Mexico                   41 
Acanthocephala terminalis    United States            1

Второй фрейм данных подсчитывает, сколько образцов видов было получено для каждой страны.Я хочу, чтобы в первом кадре данных можно было добавлять число записей в основном так, чтобы они выглядели так:

    Species Name                 Country           Lat         Lon       Number of Records  
    Corynosoma hannae            New Zealand     -46.5000     170.3000         3
    Acanthocephala terminalis    United States    38.1806    -83.4505          1
    Polymorphus brevis           Mexico           30.5603    -115.9420         41
    Polymorphus brevis           Mexico           19.6728    -99.7078
    Polymorphus brevis           Mexico           19.6833    -101.8830
    Polymorphus brevis           Mexico           30.5603    -115.9420
    Polymorphus brevis           Mexico           30.5603    -115.9420
    Acanthocephala confraterna   United States    35.6859    -83.4986           2

Поэтому я не хочу повторять, например, 41, для каждой строкиPolymorphus brevis.Я хочу, чтобы это была только одна строка, которая группирует все образцы Polymorphus brevis, найденные в Мексике, в столбец Число записей.Любая помощь с этим будет оценена.Я пытаюсь создать пузырьковую карту с этим фреймом данных с помощью пакета rworldmap.

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

На основании наших комментариев более простым решением может быть добавление нового столбца в фрейм данных 1, а не объединение двух фреймов данных -

library(dplyr)

df1 %>%
  group_by(`Species Name`, Country) %>%
  mutate(
    nRecords = ifelse(row_number() == 1, n(), NA_integer_)
  ) %>%
  ungroup()
0 голосов
/ 19 ноября 2018

Я согласен с двумя предыдущими ответами, предлагающими просто добавить новый столбец в один фрейм данных с информацией из другого фрейма данных. Один из способов сделать это - использовать функцию match():

# define 1st df:
df1 <- data.frame( 
  Observations = c("obs1", "obs2", "obs3"),
  Data = c(sample(1:20, 3))
  )

# define 2nd df:
df2 <- data.frame( 
  OtherObservations = c("obs1", "obs2", "obs3"),
  OtherData = c(1, 2, NA)
)

# now add to df1 the relevant column in df2 based on matching data in either data frame:
df1$NewColumn <- df2$OtherData[match(df1$Observations, df2$OtherObservations)]
df1
0 голосов
/ 19 ноября 2018

Что-то вроде:

library(dplyr)

left_join(df1, df2, by = c("Species Name", "Country")) %>%
  group_by(`Species Name`, Country) %>%
  mutate(
    `Number of Records` = as.numeric(as.character(`Number of Records`)),
    `Number of Records` = ifelse(row_number() == 1, `Number of Records`, NA)
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...