简体   繁体   English

R:组合/嵌套 if_else 语句

[英]R: combined/ nested if_else statement

Can anyone tell me what I'm doing wrong here.谁能告诉我我在这里做错了什么。 Trying to use a combined if_else statement in R::dplyr based on the values of two columns.尝试根据两列的值在 R::dplyr 中使用组合的 if_else 语句。 Code below doesn't work - only gives X+90?下面的代码不起作用 - 只给出 X+90?

Link to csv: https://www.dropbox.com/s/nmyiwdazsvs7wko/VideoTrack_ed.csv?dl=0 csv 链接: https ://www.dropbox.com/s/nmyiwdazsvs7wko/VideoTrack_ed.csv ? dl =0

library(readr)
library(dplyr)

VidTrack <- read_csv("VideoTrack_ed.csv")

x <- VidTrack$course

Perp <- if_else(("R" %in% VidTrack$Side & VidTrack$course<270), x+90, x-270,
                if_else(("L" %in% VidTrack$Side & VidTrack$course<90), x+270,
                        x-90))
Perp_df <- as.data.frame(Perp)

In Excel this would be;在 Excel 中,这将是; =IF(AND(H2="R",Z2<270),Z2+90,IF(AND(H2="R",Z2>=270),Z2+270,IF(AND(H2="L",Z2<90),Z2+270,Z2-90)))

Column H = VidTrack$Side
Column Z = VidTrack$course

We can use case_when listing all the conditions to be executed sequentially.我们可以使用case_when列出所有要顺序执行的条件。

library(dplyr)

VidTrack %>%
   mutate(new_column = case_when(
                       Side == "R" & course < 270 ~ course + 90, 
                       Side == "R" & course >= 270  ~ course - 270, 
                       Side == "L" & course < 270 ~ course + 270, 
                       Side == "L" & course >= 90 ~ course - 90))

I am unable to open the file, so can't help much.我无法打开文件,所以帮不上忙。 But, shouldn't it be like this:但是,不应该是这样的:

Perp <- if_else((VidTrack$Side == "R" & VidTrack$course < 270), x+90, x-270,
                if_else((VidTrack$Side == "L" & VidTrack$course < 90), x+270,
                        x-90))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM