簡體   English   中英

如何在 dataframe 中使用來自另一個 dataframe 的信息在 R 中添加不同長度的列?

[英]How to add a column in a dataframe using information from another dataframe with different lengths in R?

我有兩個具有不同列和行長度的數據框。 我想使用兩個數據幀中都存在的“區域”列從 dataframe B(列 X 和 Y)的 dataframe A 中添加兩列。 該圖顯示了它的外觀以及我希望如何獲得(數據框 C,但也可以添加到 dataframe A 中)。 我只是給你看頭,但它有很多物種,應該對所有物種和帶有 x 和 Y 列的區域進行匹配。 有人可以幫我嗎? 在此處輸入圖像描述

您可以使用dplyr::left_join根據region添加列,然后僅使用select到 select 列。

library(dplyr)
dataframe_a %>%
  left_join(dataframe_b, by = "region") %>%
  select(species, region, X, Y)

有很多方法可以連接兩個表。 我只給你看一個,但你可以在這里找到更多的材料

如果您left_join ,您將無法獲得所需的 output:

data.frame(species=dfA$species, region=dfA$region, X=dfB$X, Y=dfB$Y)
species <- (rep("Aa achalensis",6))
region <- c("ABT", "AFG", "AGE", "AGS", "AGW", "ALA")
dfA <- data.frame(species, region)

region <- c("ABT", "AGE", "AGS", "AGW", "ALA", "ALB")
LEVEL3_NAM <- c("Alberta", "Argentina Northeast", "Argentina South", "Argentina Northwest", "Alabama", "Albania")
LEVEL2_COD <- c(71, 85, 85, 85,78, 13)
LEVEL1_COD <- c(7,8,8,8,7,1)
X <- c(1,2,3,4,5,6)
Y <- c(7,8,9,10,11,12)
dfB <- data.frame(region, LEVEL3_NAM, LEVEL2_COD, LEVEL1_COD, X, Y)

left_join(dfA, dfB, by="region") %>% 
  select(species, region, X, Y)

data.frame(species=dfA$species, region=dfA$region, X=dfB$X, Y=dfB$Y)

使用left_join

       species region  X  Y
1 Aa achalensis    ABT  1  7
2 Aa achalensis    AFG NA NA
3 Aa achalensis    AGE  2  8
4 Aa achalensis    AGS  3  9
5 Aa achalensis    AGW  4 10
6 Aa achalensis    ALA  5 11

使用data.frame(species=dfA$species, region=dfA$region, X=dfB$X, Y=dfB$Y)

        species region X  Y
1 Aa achalensis    ABT 1  7
2 Aa achalensis    AFG 2  8
3 Aa achalensis    AGE 3  9
4 Aa achalensis    AGS 4 10
5 Aa achalensis    AGW 5 11
6 Aa achalensis    ALA 6 12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM