我有两个数据集,我需要添加一个基于两个变量的特定级别的值。我需要将dat dataset
上计算的值添加到dat1 dataset
,因此输出应该像dat2
一样。任何想法如何(dat1中的值是文本) ?
dat3 <- read.table(text = " lamps vases
7 9
1 6
3 5
7 8
5 4
1 3
0 7
6 6
8 9 ", header = TRUE)
dat2 <- read.table(text = " lamps vases est
3,5 4,5 0.6
8 9 0.4
", header = TRUE)
dat2 <- read.table(text = " lamps vases est
7 9 0
1 6 0
3 5 0.6
7 8 0
5 4 0.6
1 3 0
0 7 0
6 6 0
8 9 0.4", header = TRUE)
答案 0 :(得分:1)
我们可以尝试使用tidyverse
。通过将第一个数据集('灯','花瓶'列(separate_rows
),left_join
与第一个数据集分开,将第二个数据集'dat2'(OP的帖子中有2行)转换为'long'格式( 'df1' - 在OP的帖子中标记为'df3'),replace_na
将'est'中的NA更改为0
library(tidyverse)
separate_rows(dat2, lamps, convert = TRUE) %>%
separate_rows(vases, convert = TRUE) %>%
left_join(dat1, ., by = c("lamps", "vases")) %>%
replace_na(list(est = 0))
# lamps vases est
#1 7 9 0.0
#2 1 6 0.0
#3 3 5 0.6
#4 7 8 0.0
#5 5 4 0.6
#6 1 3 0.0
#7 0 7 0.0
#8 6 6 0.0
#9 8 9 0.4