R if else语句有多个条件
我正在尝试开发一个if-else语句来应用于下面的data.frame。以下是我试图解释的情况:R if else语句有多个条件,r,if-statement,R,If Statement,我正在尝试开发一个if-else语句来应用于下面的data.frame。以下是我试图解释的情况: 如果“year”中的年份=或>较大的“YearLimitA”或“YearLimitB”中的年份值,则“value”中的值保持不变 如果“year”中的年份小于“YearLimitA”或“YearLimitB”中的一个年份值,但大于或等于“YearLimitA”或“YearLimitB”中的另一个年份值,“value”中的值需要除以2 如果“year”中的年份小于“YearLimitA”和“YearL
df <- df[df$Year >= pmin(df$YearLimitA, df$YearLimitB),]
df$Value <- with(df, ifelse(Year>=pmax(YearLimitA, YearLimitB), Value, Value/2))
和all.equal(df2,df,check.attributes=F)
给出TRUE
以下是一种方法:
# sort years
rangeYear <- apply(df[c("YearLimitA", "YearLimitB")], 1, range)
# remove colums
idx <- df$Year >= rangeYear[1, ]
df2 <- df[idx, ]
# change values
df2 <- transform(df2, Value = Value / (1 + (Year < rangeYear[2, ][idx])))
不完全是。如果条件2为真,“值”除以2。如果条件1为真,“值”保持不变。可以用更好的措辞;我会编辑它。斯文还指出了条件一中糟糕的措辞。我已经编辑了它,希望它能修复不一致性。在您的代码中,是否保留第1行,然后将第2行更改为:df$Value=pmax(df$YearLimitA,df$YearLimitB),Value,Value/2)请参见我的编辑,我在编辑中考虑了这一点,其中一些打字错误也被修复。
# sort years
rangeYear <- apply(df[c("YearLimitA", "YearLimitB")], 1, range)
# remove colums
idx <- df$Year >= rangeYear[1, ]
df2 <- df[idx, ]
# change values
df2 <- transform(df2, Value = Value / (1 + (Year < rangeYear[2, ][idx])))
Name Value Year YearLimitA YearLimitB
2 t1 1.3 2001 2001 2002
3 t1 3.2 2002 2001 2002
4 t1 4.1 2003 2001 2002
6 t2 3.4 2002 2002 2002
7 t2 2.4 2003 2002 2002
9 t3 2.0 2001 2002 2001
10 t3 1.9 2002 2002 2001
11 t3 2.3 2003 2002 2001