我真的需要帮助,因为我迷失了.
我正在尝试创建一个折线图,显示一年内几支球队的表现.我把这一年分为四季:2012年1月1日,2012年4月1日.12年8月1日.12/1/12并将csv数据帧加载到R.
Month Team Position
1 1/1/12 South Africa 56
2 1/1/12 Angola 85
3 1/1/12 Morocco 61
4 1/1/12 Cape Verde Islands 58
5 4/1/12 South Africa 71
6 4/1/12 Angola 78
7 4/1/12 Morocco 62
8 4/1/12 Cape Verde Islands 76
9 8/1/12 South Africa 67
10 8/1/12 Angola 85
11 8/1/12 Morocco 68
12 8/1/12 Cape Verde Islands 78
13 12/1/12 South Africa 87
14 12/1/12 Angola 84
15 12/1/12 Morocco 72
16 12/1/12 Cape Verde Islands 69
Run Code Online (Sandbox Code Playgroud)
当我尝试使用ggplot2生成图表时,第12季度的第12季度莫名其妙地移动到第二点.
ggplot(groupA, aes(x=Month, y=Position, colour=Team, group=Team)) + geom_line()
Run Code Online (Sandbox Code Playgroud)
然后我将此绘图放入变量GA中,以尝试使用scale_x格式化日期:
GA + scale_x_date(labels = date_format("%m/%d"))
Run Code Online (Sandbox Code Playgroud)
但我一直得到这个错误:
Error in structure(list(call = match.call(), aesthetics = aesthetics, :
Run Code Online (Sandbox Code Playgroud)
找不到函数"date_format"
如果我运行此代码:
GA + scale_x_date()
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error: Invalid input: date_trans works with objects of class Date only
Run Code Online (Sandbox Code Playgroud)
我正在使用运行R 2.15.2的Mac OS X.
请帮忙.
因为,df$Month
(假设你的data.frame
是df
),这是一个factor
按此顺序排列的水平.
> levels(df$Month)
# [1] "1/1/12" "12/1/12" "4/1/12" "8/1/12"
Run Code Online (Sandbox Code Playgroud)
解决方案是重新排序因子的级别.
df$Month <- factor(df$Month, levels=df$Month[!duplicated(df$Month)])
> levels(df$Month)
# [1] "1/1/12" "4/1/12" "8/1/12" "12/1/12"
Run Code Online (Sandbox Code Playgroud)
编辑:使用替代解决方案strptime
# You could convert Month first:
df$Month <- strptime(df$Month, '%m/%d/%y')
Run Code Online (Sandbox Code Playgroud)
然后你的代码应该工作.查看下图: