[英]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.