【发布时间】:2018-12-28 18:18:39
【问题描述】:
我有一个包含五个变量的数据集 (ft.mutate.topics)(四个数字是 ft_technical、ft_performative、ft_procedural 和 ft_moral)。第五个是“topic_lab”,我希望它采用与其他四个中值最高的变量相关的名称(作为字符)。
下面产生了一个类似于我的数据集。
set.seed(1)
Data <- data.frame(
X = sample(1:10),
Y = sample(1:10),
Z = sample(1:10))
我想要一个变量 - V - 对每个对应于这三个变量中的哪一个的观察值取“X”,“Y”,og“Z”,取最高值 - 例如对于 X,这又是类似的:
if (Data$X > Data$Y & Data$X > Data$Z) Data$label <- "X"
Warning message:
In if (Data$X > Data$Y & Data$X > Data$Z) Data$label <- "X":
the condition has length > 1 and only the first element will be used
关于我最初的示例,我尝试了以下结合 if 命令:
if (ft.mutate.topics$ft_technical > ft.mutate.topics$ft_performative &
ft.mutate.topics$ft_technical > ft.mutate.topics$ft_procedural &
ft.mutate.topics$ft_technical > ft.mutate.topics$ft_moral)
ft.mutate.topics$topic_lab = "technical"
if (ft.mutate.topics$ft_performative > ft.mutate.topics$ft_technical &
ft.mutate.topics$ft_performative > ft.mutate.topics$ft_procedural &
ft.mutate.topics$ft_performative > ft.mutate.topics$ft_moral)
ft.mutate.topics$topic_lab = "performative"
if (ft.mutate.topics$ft_procedural > ft.mutate.topics$ft_performative &
ft.mutate.topics$ft_procedural > ft.mutate.topics$ft_technical &
ft.mutate.topics$ft_procedural > ft.mutate.topics$ft_moral)
ft.mutate.topics$topic_lab = "procedural"
if (ft.mutate.topics$ft_moral > ft.mutate.topics$ft_performative &
ft.mutate.topics$ft_moral > ft.mutate.topics$ft_procedural &
ft.mutate.topics$ft_moral > ft.mutate.topics$ft_technical)
ft.mutate.topics$topic_lab = "moral"
它说:“条件的长度 > 1,并且只使用第一个元素”并将整个变量替换为“执行性”,因为它在第 1 行中具有最高值。有人知道发生了什么吗?
谢谢!
【问题讨论】:
-
任何语句都会计算出许多 TRUE 和 FALSE。也许你需要
all(your long statement)?
标签: r if-statement recode