gpt4 book ai didi

r - 根据R中的条件定义元素

转载 作者:行者123 更新时间:2023-12-05 09:31:11 24 4
gpt4 key购买 nike

假设我有一个如下所示的数据框 (df):

stim <- c("a", "k", "y", "j", "t", "Stop", "f", "l", "b", "a", "c", "Stop")
df <- data.frame(stim)

我想根据“stim”的值创建另一列“YesorNo”。我想要的输出是这样的:

stim  YesorNo
a yes
k yes
y yes
j yes
t No
Stop N/A
f yes
l yes
b yes
a yes
c No
Stop N/A
... ...

如果 stim 是“停止”,我希望“YesorNo”的值是 N/A。我可以为此使用一个简单的 ifelse 语句 ( df$YesorNo <- ifelse(df$stim=="Stop", "N/A", "yes" ) 但我也希望“停止”之前的值(在我的示例中为字母 t 和 c)对应于“否”而不是"is"。我将如何定义它?

最佳答案

您可以使用 lead 查找下一个值,使用 case_when 列出条件。

library(dplyr)

df %>%
mutate(YesorNo = case_when(stim == 'Stop' ~ NA_character_,
lead(stim) == 'Stop' ~ "No",
TRUE ~ 'Yes'))

# stim YesorNo
#1 a Yes
#2 k Yes
#3 y Yes
#4 j Yes
#5 t No
#6 Stop <NA>
#7 f Yes
#8 l Yes
#9 b Yes
#10 a Yes
#11 c No
#12 Stop <NA>

data.table类似,您可以使用fcase

setDT(df)[, YesorNo := fcase(stim == 'Stop', NA_character_, 
shift(stim, type = 'lead') == 'Stop', "No",
default = "Yes")]
df

关于r - 根据R中的条件定义元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69023354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com