我正在创建明尼苏达州的地图
map.test <- ggplot(kt_geom)+
geom_polygon(aes(long, lat, group=group), fill="white")+
geom_path(color="gray48", mapping=aes(long, lat, group=group), size=0.2)
map.test
Run Code Online (Sandbox Code Playgroud)
并显示以下地图。
如何删除浅灰色背景以及经度和纬度轴?我知道如果我使用 choropleth,这些不会出现,但我需要在 ggplot 中使用一些函数。
在 R 中,可以根据名称模式轻松地从数据框中删除列:请参阅如何在 R 中按名称模式删除列?例如,将数据子集仅包含名称与条件匹配的列。
> df <- data.frame(A=c(1,2,3), A2=c(1,2,3), B=c(1,2,3), BG=c(2,2,3))
> df[, -grep("A", colnames(df))]
B BG
1 1 2
2 2 2
3 3 3
Run Code Online (Sandbox Code Playgroud)
但直接将解决方案应用于 data.table 是行不通的。
> dt <- data.table(A=c(1,2,3), A2=c(1,2,3), B=c(1,2,3), BG=c(2,2,3))
> dt[, -grep("A", colnames(df))]
[1] -1 -2
Run Code Online (Sandbox Code Playgroud)
可以做什么?
我正在创建一个数据框,其中包含从 2000 年到 2010 年每个州每年发生的某种事件的数量(假设它们是枪支事件):
states <- c('Texas', 'Texas', 'Arizona', 'California', 'California')
incidents <- c(1, 1, 2, 1, 4)
years <- c(2000, 2008, 2004, 2002, 2007)
DF <- data.frame(states, incidents, years)
> DF
states incidents years
1 Texas 1 2000
2 Texas 1 2008
3 Arizona 2 2004
4 California 1 2002
5 California 4 2007
Run Code Online (Sandbox Code Playgroud)
我想插入行来完成数据集,例如德克萨斯州 2001 年、2002 年、2003 年、... 2007 年以及 2009 年和 2010 年的零。同样,除了 2004 年之外,亚利桑那州的所有年份都为零。加利福尼亚也是如此。
我怎样才能做到这一点?
我有一个user_login包含两行的表,userId 和 tstamp(用户 ID 和登录时间戳)。
计算登录次数很简单:
SELECT userId, COUNT(*) as logins FROM user_login GROUP BY userId;
Run Code Online (Sandbox Code Playgroud)
计算某个日期(例如 2018 年 1 月 1 日)之前的登录次数也很简单:
SELECT userId
, COUNT(*) as loginsBeforeJan1
FROM user_login
WHERE tstamp < '2018-01-01'
GROUP
BY userId;
Run Code Online (Sandbox Code Playgroud)
如何在一张表中同时显示两个结果?我试过
SELECT userId
, COUNT(*) as logins
, COUNT(IF(tstamp < '2018-01-01',1,0)) loginsBeforeJan1
FROM user_login
GROUP
BY userId;
Run Code Online (Sandbox Code Playgroud)
但登录和登录之前一月 1 是相同的。
如何修改查询以产生我想要的结果?
我有一个 ggplot2 并且正在尝试增加图例项之间的间距。
下面的代码产生下面的图:
library(tidyverse)
library(ggplot2)
year <- 2005:2015
variablea <- 1000:1010
variableb <- 1010:1020
df = data.frame(year, variablea, variableb)
df %>% gather(variable, value, -year) %>%
ggplot(aes(x = year, y = value, colour = variable, linetype = variable)) +
geom_line() +
theme(
legend.key=element_blank()
,legend.text=element_text(size=12)
,legend.position="bottom"
,legend.title=element_blank()
,panel.background = element_rect(fill = "transparent") # bg of the panel
,plot.background = element_rect(fill = "transparent") # bg of the plot
)
Run Code Online (Sandbox Code Playgroud)
然而,底部的图例项目之间的差距太近了,不舒服。
我试图从其他问题中调整解决方案,但它们不起作用。
例如,+ guides(fill=guide_legend(keywidth=0.1, keyheight=0.1,
default.unit="inch"))按照有没有办法更改 ggplot2 中图例项之间的间距中的建议添加?不起作用,因为它是一个折线图,所以这些线只是扩展以填充额外的空间。我也尝试了链接问题中建议的第二种解决方案,但它似乎没有改变(目前我正在使用+ …
计算 R 数据帧中每个组的平均值很容易。如果要排除当前观察,几乎同样容易。
在计算标准偏差时,有什么简单的方法可以排除当前的观察结果?
例如,当我有这张桌子时
data.frame(country = c(rep("A",3), rep("B",3)), weight = c(10,11,12,20,25,30))
Run Code Online (Sandbox Code Playgroud)
,我需要下表:
data.frame(country = c(rep("A",3), rep("B",3)), weight = c(10,11,12,20,25,30), standarddeviation = c(sd(c(11,12)), sd(c(10,12)), sd(c(10,11)), sd(c(25,30)), sd(c(20,30)), sd(c(20,25))))
Run Code Online (Sandbox Code Playgroud) 我有一个非常大的数据集,其中包含每个月每个团队的成员。我想找到每个团队的增删改查。因为我的数据集非常大,所以我尝试尽可能多地使用内置函数。
我的数据集如下所示:
month team members
0 0 A X, Y, Z
1 1 A X, Y
2 2 A W, X, Y
3 0 B D, E
4 1 B D, E, F
5 2 B F
Run Code Online (Sandbox Code Playgroud)
它由以下代码生成:
num_months = 3
num_teams = 2
obs = num_months*num_teams
df = pd.DataFrame({"month": [i % num_months for i in range(obs)],
"team": ['AB'[i // num_months] for i in range(obs)],
"members": ["X, Y, Z", "X, Y", "W, X, Y", "D, E", "D, E, F", "F"]}) …Run Code Online (Sandbox Code Playgroud) 我有一个 Excel 表格,其中包含美国每个县每个行业的就业人数。
它看起来像这样:
County Industry Employees
a 1 49
a 2 1
b 1 4
b 2 19
...
Run Code Online (Sandbox Code Playgroud)
我想计算每个县就业的Herfindahl-Hirschman 指数(HHI)。我正在使用 R。给定一些数字,计算 HHI 很容易:
hhi <- function(x) {
# calculate sum
total <- sum(x)
# calculate share
share <- x*100/total
# add
return(sum(share^2))
}
Run Code Online (Sandbox Code Playgroud)
因此,例如,县 1 的 HHI 为 9608 (= 98^2 + 2^2),县 2 的 HHI 为 7127。
但是,如何使用该县的 HHI 创建一个新列?