簡體   English   中英

根據 R 中兩個其他向量中的匹配值在一個向量中分配值

[英]Assign values in one vector based on matching values in two other vectors in R

我的 dataset1 有一個 id 列和一個 number 列。 id號出現多次,可以是5次,也可以是60次,或者別的什么。

id    number
2       NA
4       NA
9       ...
1
2
2
3
5
5
5
12

我有 dataset2,其中每個 id 只出現一次,然后是數字的值

id  number
1     12 
2     25
3     33
4     121
5     35
9     1500

dataset1 中有 id,但在 dataset2 中不存在。

我想將 dataset2 的數量分配給 dataset1 中的空數字列以獲得正確的 ID。 我嘗試了一些東西,但它總是給我一個錯誤,即我想要替換的觀察數量與觀察的輸入不匹配。 我知道是這種情況,因為我的數據集 2 的觀測值少於數據集 1。 我嘗試過的一些事情:

dataset1[na.omit(match(dataset1$id, dataset2$id)), ]$number <- data_new[dataset2$id %in% dataset1$id, ]$number

dataset1$number <- ifelse(dataset2$id %in% dataset1$id, dataset2$number, NA)

我將不勝感激任何幫助! 謝謝!!

假設您的 dataset1 中的“數字”列僅包含 NA,最簡單的解決方案是將您的 dataset1 整理為 ids 和 left_join dataset2 的向量:

library(dplyr)

tidy <- dataset1 %>%
          group_by(id) %>%
          summarise()

merge <- left_join(tidy, dataset2, by = "id")

暫無
暫無

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

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