2017-07-27 11 views
0

我有两个数据集,我需要添加一个基于两个变量值的特定级别的值。我需要将计算的值添加到dat datasetdat1 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) 

回答

1

我们可以tidyverse尝试。将'灯','花瓶'列(separate_rows),left_join分为第一个数据集('df1' - 标记为'df3'),将第二个数据集'dat2' “在OP的帖子),并与replace_na变化NA在 'EST' 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 
+0

谢谢@akrun – mql4beginner

相关问题