【发布时间】:2020-02-26 19:32:01
【问题描述】:
这是数据。所以这些是火车站:
TwentyFourSeptTrainData
$PTCAR_LG_NM_NL
ALPHA
BRAVO
CHARLIE
DELTA
ECHO
FOXTROT
ALPHA
BRAVO
etc. etc.
所以对于每个火车站,我想运行下面的循环,以便值 c 变为 Station1 或 Station2,具体取决于行。
所以我首先必须逐行将 b 定义为该列中的每个火车站。 然后我需要确保对于 b 中的每一行,我得到一个对应的 c。
for (b in TwentyFourSeptTrainData$PTCAR_LG_NM_NL) {
if (b=='CHARLIE' | b=='ALPHA'){
c = 'Station1'
}
else if (b==BRAVO | b=='DELTA' | b=='ECHO' | b=='FOXTROT'){
c = 'Station2'
}
}
print(c)
因为在那之后,我需要在需要 c 的每个输出的每一行上运行一个 函数。
但是当我将 b (在运行循环之前)预定义为
b
之后,我打印(c),但它只给我一个输出;第一个。我认为我在索引方面做错了。我做错了什么?
【问题讨论】:
-
您每次通过循环时都会不断替换
c的值。我认为您根本不需要循环,您最好使用ifelse函数。也许像ifelse(TwentyFourSeptTrainData$PTCAR_LG_NM_NL %in% c('CHARLIE','ALPHA'), "Station1", "Station2") -
如果我有 3 个站点怎么办?所以:Station1,Station2,Station3。 ALPHA 在 Station3 会在哪里?
-
你可以嵌套
ifelse()语句或从dplyr切换到case_when