[英]Calculated column in R with lookup from another data frame
我對R很陌生,已經創建了一些函數,但是我有點迷失在這里:我需要提供“結果”列的值。 我目前有一個數據框,其列名稱為“ Seasons”和“ Total”。 但是,我需要添加另一列“結果”。 為此,我需要從另一個數據幀中查找“乘數”值。
Seasons Total Result
Winter 200 100
Fall 50 25
Spring 10 5
Summer 120 12
我還有其他數據列和列值
Multiplier Value
Win1 0.5
Win2 0.1
當季節為冬季,秋季和春季時,Win1僅應乘以“總計”,而當季節為夏季時,僅將Win2乘以“總計”。 這應該是“結果”列的值。
謝謝
這有效
data1 = data.frame(Seasons = c("Winter","Fall","Spring","Summer"),
Total = c(200,50,10,120),stringsAsFactors = F)
data2 = data.frame(Multiplier = c("Win1","Win2"), Value = c(0.5,0.1), stringsAsFactors = F)
data1$Total = ifelse(data1$Seasons != "Summer", data1$Total[data1$Seasons != "Summer"]*
data2[data2$Multiplier%in%"Win1",2],
data1$Total[data1$Seasons == "Summer"]*
data2[data2$Multiplier%in%"Win2",2])
使用dplyr
另一種選擇可以是:
df1 %>% mutate(Result = ifelse(Seasons %in% c("Winter", "Fall", "Spring"),
Total*df2[df2$Multiplier=="Win1",]$Value,
Total*df2[df2$Multiplier=="Win2",]$Value))
# Seasons Total Result
#1 Winter 200 100
#2 Fall 50 25
#3 Spring 10 5
#4 Summer 120 12
# OR 2nd Option is using with
df1$Result <- with(df1, ifelse(Seasons %in% c("Winter", "Fall", "Spring"),
Total*df2[df2$Multiplier=="Win1",]$Value,
Total*df2[df2$Multiplier=="Win2",]$Value) )
數據
df1 <- read.table(text = "Seasons Total
Winter 200
Fall 50
Spring 10
Summer 120", header = T, stringsAsFactor =F)
df2 <- read.table(text = "Multiplier Value
Win1 0.5
Win2 0.1", header = T, stringsAsFactor = F)
您可以使用ifelse()
df$Result <- ifelse(df$Seasons=="Summer", df2$Value[2]*df$Total, df2$Value[1]*df$Total)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.