我在R中的绘图功能有问题。这是我到目前为止所做的。
countries <- c("CHINA ", "UNITED STATES", "UNITED KINGDOM", "GERMANY")
KeyItems <- c("Pretax Income", "Total Liabilities", "Total Assets")
datA <- mean_values[mean_values$Country %in% countries & mean_values$KeyItem %in% KeyItems, ]
datA$KeyItem <- factor(datA$KeyItem, levels = KeyItems, order = TRUE)
p <- xyplot(mn_value ~ Year | KeyItem, datA, groups = datA$Country[, drop = TRUE],
auto.key = list(space = "right"), par.settings = simpleTheme(pch = 1:5),
type = c("p", "l"), as.table = TRUE)
print(p)
我的数据框看起来像这样:
KeyItem Year Country mn_value
172 Pretax Income 1980 SWITZERLAND 2.091623e+08
173 Pretax Income 1980 IRELAND 3.597619e+07
174 Pretax Income 1980 GERMANY 2.301015e+07
175 Pretax Income 1980 SWEDEN 4.980680e+07
它返回此错误:
Error in dat$Year == Year : 'Year' is missing
我几乎没有R的经验。我找不到解决问题的方法。提前谢谢。
答案 0 :(得分:1)
正如其他人所提到的那样,您的代码显然是不完整的,并且您似乎试图以不正确的方式在类别中构造mean
值。所以这是一个导致xyplot的工作示例,在某些(但不是全部)方面类似于你的问题:
Values <- rpois(100*4*3, 200)
datA=data.frame(Values=Values, countries=countries, KeyItems=KeyItems)
datAaggr <- with( datA, aggregate(Values , list(KeyItems, countries) , FUN=mean))
# At this point you could rename the Group variables,
# or you could have done that in the aggregate call with:
datAaggr <- with( datA, aggregate(Values , list(KeyItems=KeyItems, countries=countries) , FUN=mean))
# This then succeeds using the aggregated dataframe with the re-named mean values as input:
p <- xyplot(x ~ countries | KeyItems, data=datAaggr,
auto.key = list(space = "right"), par.settings = simpleTheme(pch = 1:5),
type = c("p", "l"), as.table = TRUE)
print(p)
这需要对标签进行一些进一步的工作,但这可能会延迟,直到您学会了如何使用data.frames进行数据转换,这是一个在绘图任务之前的学习任务。莱迪思绘图系统严重依赖于拥有正确的data.frame输入。