Сортировка нечисловых и числовых значений во фрейме данных в R
Мне нужна помощь в сортировке нечисловых и числовых значений во фрейме данных в R
, У меня есть фрейм данных с 195 строками и столбцами со следующими именами:
Country.name, Country.code, Birth.rate, Internet.users, and Income.Group
Мое задание - создать новый фрейм данных, состоящий из первых 30 строк исходного, отсортированных по группам доходов в порядке возрастания, а за ними следуют пользователи Интернета в порядке убывания.
Группа доходов имеет следующие категории:
high income
, upper middle income
, lower middle income
а также low income
Internet.users
является числовым
Пожалуйста помоги!
1 ответ
set.seed(18)
# create sample dataset
df <- data.frame(Country.name = as.character(paste0("Country", 1:195)),
Income.Group = sample(c("high income", "upper middle income",
"lower middle income", "low income"), 195, TRUE),
Internet.users = round(runif(195, 500, 1500),0))
# only take the first 30 entries
df <- df[1:30,]
# make Income.Group a factor with appropiate order of levels
df$Income.Group <- factor(df$Income.Group, levels = c("low income", "lower
middle income", "upper middle income", "high income"))
# first order on Income.Group in ascending order, than on Internet.users in
# descending order (by using -rank you reverse the Intern.users column)
df <- df[order(df$Income.Group, -rank(df$Internet.users)),]
# take a look at the first 10 rows
head(df, 10)
Country.name Income.Group Internet.users
12 Country12 low income 1487
1 Country1 low income 1420
19 Country19 low income 1259
3 Country3 low income 1248
24 Country24 low income 1037
15 Country15 low income 1014
23 Country23 low income 588
17 Country17 lower middle income 1324
26 Country26 lower middle income 1244
6 Country6 lower middle income 1197