R 使用if语句对因子变量的级别进行排序

R 使用if语句对因子变量的级别进行排序,r,dplyr,R,Dplyr,使用下面的玩具数据,如果y=a,y=b等,我如何对x进行排序。我更喜欢使用示例代码来进行排序,但我不能涉及if语句。我相信循环会非常有效 #我的数据 dataframe我们可以在逻辑向量上排列,然后更改级别 library(dplyr) dataframe1 <- dataframe %>% arrange(y == 'b', x) %>% mutate(x = factor(x, levels = unique(x))) dataframe1$x #[

使用下面的玩具数据,如果y=a,y=b等,我如何对x进行排序。我更喜欢使用示例代码来进行排序,但我不能涉及if语句。我相信循环会非常有效

#我的数据


dataframe我们可以
在逻辑向量上排列
,然后更改
级别

library(dplyr)
dataframe1 <- dataframe %>% 
     arrange(y == 'b', x) %>%
     mutate(x = factor(x, levels = unique(x)))

dataframe1$x
#[1] apple      banana     orange     strawberry
#Levels: apple banana orange strawberry
数据
dataframe谢谢!有没有办法包括一个循环;如何使用您的代码遍历y的所有级别(例如,y=='b',y=='a',等等)。在我的数据中,y有20个级别。@Nadermeri你能测试我的更新吗。在完整数据中,您可能需要将
级别
更改为您指定的实际级别want@NaderMehri您可以使用
desc
换行,即
dataframe1%排列(desc(因子(y,级别=c('a','b')),x)%%>%变异(x=因子(x,级别=unique(x)))
@nadermerhiri虽然数据帧1%排列(desc(因子(y,级别=c('a','b')),desc(x))%>%变异(x=因子(x,级别=unique(x)),但对我来说它正在改变;级别(dataframe1$x)#[1]“草莓”“橘子”“香蕉”“苹果”
@nadermerhiri您缺少一个
y='b'
之后,即
desc(y='b')
位于错误的位置请在发布之前仔细检查您的代码/数据,确保它确实有效。您的数据帧创建代码不起作用,您的尝试也不起作用。
data.frame$x
应该是什么意思?
data.frame$x <- factor(
  data.frame$x,
  levels = c(
    "apple", "orange", "banana", "strawberry"),
  labels = c(
    "apple", "banana", "orange", "strawberry")
)
library(dplyr)
dataframe1 <- dataframe %>% 
     arrange(y == 'b', x) %>%
     mutate(x = factor(x, levels = unique(x)))

dataframe1$x
#[1] apple      banana     orange     strawberry
#Levels: apple banana orange strawberry
dataframe1 <- dataframe %>%
    arrange(factor(y, levels = c('a', 'b')), x) %>%
    mutate(x = factor(x, levels = unique(x)))
dataframe <- structure(list(x = c("apple", "orange", "banana", "strawberry"
), y = c("a", "b", "a", "b")), class = "data.frame", row.names = c(NA, 
-4L))