我有一个看起来像这样的数据集:
pollster enddate rawpoll_clinton rawpoll_trump
4208 EPIC-MRA 1/26/2016 51.2 48.8
4168 EPIC-MRA 3/22/2016 56.0 44.0
4162 EPIC-MRA 8/4/2016 57.3 42.7
1187 EPIC-MRA 9/13/2016 52.1 47.9
747 EPIC-MRA 10/3/2016 57.3 42.7
368 EPIC-MRA 10/24/2016 54.7 45.3
124 EPIC-MRA 11/3/2016 52.5 47.5
3132 Glengariff Group, Inc. 5/26/2016 52.9 47.1
2282 Glengariff Group, Inc. 8/1/2016 56.5 43.5
789 Glengariff Group, Inc. 9/28/2016 54.5 45.5
436 Glengariff Group, Inc. 10/11/2016 58.0 42.0
我正在尝试制作一个在每次调查中都有单独一行的图,以显示批准如何随时间变化。
我用于“克林顿”的代码如下:
ggplot(data = mich_polls, aes(x = enddate, y = rawpoll_clinton, group=2)) +
geom_line(aes(colour = pollster, size = 1.5))+
theme(axis.text.x = element_text(angle = 40, hjust = 1))
但是,这只会生成日期轴混乱,时间顺序混乱的图形:
为解决此问题,我尝试将enddate
变量转换为Date格式,但最终结果很奇怪。大多数尝试都会生成NA
值的列表。以下两个产生了奇怪的结果:
as.Date(data.frame(as.factor(mich_polls$enddate), stringsAsFactors = FALSE)[[1]],
format = "%d/%m/%Y")
给出:
[1] NA NA "2016-04-08" NA "2016-03-10" NA "2016-03-11"
[8] NA "2016-01-08" NA "2016-11-10"
我也尝试过:
as.Date(data.frame(as.factor(mich_polls$enddate),
stringsAsFactors = FALSE)[[1]], format = "%d/%m/%Y")
给出:
[1] "2016-01-26" "2016-03-22" NA "2016-09-13" NA "2016-10-24" NA
[8] "2016-05-26" NA "2016-09-28" "2016-10-11"
有人可以建议如何修复数据格式还是建议另一种制作我的折线图的方法?
答案 0 :(得分:0)
您可以像这样直接应用"/usr/local/lib/python3.6/site-packages/flex/utils.py", line 125, in
get_type_for_value raise ValueError("Unable to identify type of
{0}".format(repr(value)))
ValueError: Unable to identify type of
Serializer4ModelA(many=True):
:
as.Date()
在绘图中使用mich_polls$enddate <- as.Date(mich_polls$enddate, format="%m/%d/%y")
和选项scale_x_date()
,您可以在其中应用date_breaks
,"2 weeks"
之类的值;只需加载"1 month"
后再查看?scale_x_date
。
library(ggplot2)
产量:
数据:
library(ggplot2)
ggplot(data = mich_polls, aes(x = enddate, y = rawpoll_clinton, group=2)) +
geom_line(aes(colour = pollster, size = 1.5)) +
scale_x_date(date_breaks="1 month") +
theme(axis.text.x = element_text(angle = 40, hjust = 1))
答案 1 :(得分:0)
在处理日期时,我遇到了类似的问题。这是一个很长的方法,但它很简单且有效。试试看:
1。将日期加载到数据框中
df = data.frame(Date = (file$enddate)
2。创建一个新变量,并在Date上使用因数
new_var <- factor(df$Date)
3。使用character.Date
new_var <- as.character.Date(new_var)
4。最后使用as.Date
new_var <- as.Date(new_var,"%d/%m/%Y) #In your case use month date and year
5。将此附加到您的原始dataframe
上并照常打印