У меня есть набор данных (ft.mutate.topics) с пятью переменными (четыре числовых: ft_technical, ft_perforrative, 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", либо "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. Кто-нибудь знает, что происходит?
Спасибо!