R 定制分拣时间和天数
我有包含小时和天的文本。我想按逻辑顺序对它们进行排序——小时应该先出现,然后是天R 定制分拣时间和天数,r,dplyr,R,Dplyr,我有包含小时和天的文本。我想按逻辑顺序对它们进行排序——小时应该先出现,然后是天 Time <- c("10 days ago", "9 days ago", "4 days ago", "2 days ago", "3 days ago", "6 days ago", "10 hours ago", "8 days ago",
Time <- c("10 days ago", "9 days ago", "4 days ago", "2 days ago", "3 days ago",
"6 days ago", "10 hours ago", "8 days ago", "5 days ago", "12 days ago",
"8 hours ago")
Time这里有一个基本的R方法:
Time[order(match(sub('.*(hours|days).*', '\\1', Time), c('hours', 'days')),
as.numeric(gsub('\\D', '', Time)))]
# [1] "8 hours ago" "10 hours ago" "2 days ago" "3 days ago"
# [5] "4 days ago" "5 days ago" "6 days ago" "8 days ago"
# [9] "9 days ago" "10 days ago" "12 days ago"
我们使用两个变量对数据进行排序
日复一日
sub
从Time
中提取“小时”或“天”,我们使用match
生成1/2作为输出。1至小时,2至天
按号码
我们从时间
中删除所有非数字的内容,并将其转换为数字
以下是一种基本的R方法:
Time[order(match(sub('.*(hours|days).*', '\\1', Time), c('hours', 'days')),
as.numeric(gsub('\\D', '', Time)))]
# [1] "8 hours ago" "10 hours ago" "2 days ago" "3 days ago"
# [5] "4 days ago" "5 days ago" "6 days ago" "8 days ago"
# [9] "9 days ago" "10 days ago" "12 days ago"
我们使用两个变量对数据进行排序
日复一日
sub
从Time
中提取“小时”或“天”,我们使用match
生成1/2作为输出。1至小时,2至天
按号码
我们从时间
中删除所有非数字的内容,并将其转换为数字
这些仅使用R的基
1)它创建了一个包含三个字段的三列数据框(V1
是数字,V2
是hour
或day
和V3
是ago
)然后使用V2
按降序执行适当的排序,并在V2
内按升序执行V1
排序<代码>顺序
生成一个应用于时间的索引
o <- with(read.table(text = Time), order(-xtfrm(V2), V1))
Time[o]
2)这是(1)的一个变体,因为TRUE在FALSE之后排序:
o <- with(read.table(text = Time), order(V2 == "days", V1))
Time[o]
o这些只使用R的基
1)它创建了一个包含三个字段的三列数据框(V1
是数字,V2
是hour
或day
和V3
是ago
)然后使用V2
按降序执行适当的排序,并在V2
内按升序执行V1
排序<代码>顺序
生成一个应用于时间的索引
o <- with(read.table(text = Time), order(-xtfrm(V2), V1))
Time[o]
2)这是(1)的一个变体,因为TRUE在FALSE之后排序:
o <- with(read.table(text = Time), order(V2 == "days", V1))
Time[o]
o您的数据中是否只有小时和天?是的,我只有这两个小时和天?您的数据中是否只有小时和天?是的,我只有这两个小时和天谢谢。我在data.frameIt中将此列作为一列,这不重要,对吗?您使用的不是Time
而是df$column\u name
?谢谢。我在data.frameIt中将此列作为一列,这不重要,对吗?您使用的是df$column\u name
,而不是Time
?