这就是我想要做的.我的数据框有一个因子变量"country",我想根据国家/地区拆分数据框.然后,我想对每个国家/地区的数据框的每个变量采用列均值.
数据在这里:https://github.com/pourque/country-data
到目前为止我已经这样做了......
myList <- split(df1, df1$country)
for(i in 1:length(myList)) {
aggregate <- mapply(myList[[i]][,-c(38:39)], colMeans)
}
Run Code Online (Sandbox Code Playgroud)
(我不包括第38和第39列,因为这些是因素.)
我已经读过这个(多个列表中的函数),这让我觉得mapply就是这里的答案......但是我收到了这个错误:
Error in match.fun(FUN) :
'myList[[i]][, -c(38:39)]' is not a function, character or symbol
Run Code Online (Sandbox Code Playgroud)
也许我的格式不正确?
我正在尝试使用rworldmap生成一个图形,使用我的数据框dagg.ETA:数据.这是我到目前为止所拥有的.
library(rworldmap)
data(dagg)
sPDF <- joinCountryData2Map(dagg, joinCode='ISO2',
nameJoinColumn='country', verbose='TRUE')
mapDevice()
mapCountryData(sPDF, nameColumnToPlot='avoidance',
numCats=10, mapTitle="Avoidance", addLegend=TRUE)
dev.off()
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时,没有任何东西出现.控制台显示"null device 1".它刚刚工作,我不确定它有什么改变它...
也许我没有使用合适的设备?
ETA:这是我正在阅读的rworldmap的纲要.
这是我的数据集(名为 g)现在的样子。我在 R 工作。
Q.35 | Q.36 | age | gender | country
2 | 2 | 1 | 20 | 2 | AU"
3 | 5 | 5 | 21 | 1 | AU"
Run Code Online (Sandbox Code Playgroud)
我想删除国家/地区代码上的那些引号(AU 而不是 AU")。但是我尝试过的正则表达式没有用。
h <- grep("\"", "", g)
h <- grep(""", "", g)
h <- grep('"', '', g)
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除那些引号?
有效!我应该使用 gsub,而不是 grep。
但是 gsub 搞砸了我的代码,所以我意识到我必须将 gsub 应用于特定变量,如下所示:
h$country.f <- gsub("\"", "", h$country.f)
Run Code Online (Sandbox Code Playgroud) 这很奇怪.当我尝试选择我的列data.table做
df1[, 30]
Run Code Online (Sandbox Code Playgroud)
它只给了我30,或者我放在那里的任何数字.不是第30栏.
数据:https://github.com/pourque/country-data/blob/master/data/df1.csv
我已经检查了,当我刚刚进行测试时,一切正常data.frame:
df2 <- data.frame(x = 1:3, y = 3:1, z = 7:9)
> df2[, 2]
[1] 3 2 1
Run Code Online (Sandbox Code Playgroud)
关于可能发生的事情的任何想法?