我正在尝试使用R中的readr :: read_csv读取csv文件.我导入的csv文件大约有150列,我只是包含示例的前几列.我期待覆盖默认类型(我执行read_csv的日期)的第二列到字符或其他日期格式.
GIS Join Match Code Data File Year State Name State Code County Name County Code Area Name Persons: Total
G0100010 2008-2012 Alabama 1 Autauga County 1 Autauga County, Alabama 54590
df <- data.frame("GIS Join Match Code"="G0100010", "Data File" = "2008-2012", "State" = "Alabama", "County" = "Autauga County", "Population" = 54590)
Run Code Online (Sandbox Code Playgroud)
问题是,当我使用readr :: read_csv时,似乎我可能必须在覆盖col_types时使用所有变量(请参阅下面的错误).这需要指定单独覆盖所有150列(?)..问题是:有没有办法指定覆盖特定列的col_type或命名的对象列表?在我的情况下,它将覆盖"数据文件年"列.
我知道任何省略的列都会被自动解析,这对我的分析很好.我认为它变得更复杂,因为列名在我下载的文件中有空格(例如,"数据文件年","国家代码")等.
tempdata <- read_csv(df, col_types = "cc")
Error: You have 135 column names, but 2 columns
Run Code Online (Sandbox Code Playgroud)
我想,如果可能的话,其他选项只是跳过一起阅读第二列?
这个问题在某种程度上与问题有关,问题是在非平凡的标准上有效地合并两个数据框,并检查日期是否在r中的两个日期之间.我在这里发布的请求该功能是否存在: GitHub问题
我希望加入两个数据帧dplyr::left_join().我用来加入的条件是小于,大于ie,<=和>.是否dplyr::left_join()支持这种功能?或者只=在这些键之间使用操作符.这很容易从SQL运行(假设我在数据库中有数据帧)
这是一个MWE:我有一个公司年(fdata)的两个数据集,而第二个是每五年发生一次的调查数据.因此,对于fdata两个调查年份之间的所有年份,我加入相应的调查年度数据.
id <- c(1,1,1,1,
2,2,2,2,2,2,
3,3,3,3,3,3,
5,5,5,5,
8,8,8,8,
13,13,13)
fyear <- c(1998,1999,2000,2001,1998,1999,2000,2001,2002,2003,
1998,1999,2000,2001,2002,2003,1998,1999,2000,2001,
1998,1999,2000,2001,1998,1999,2000)
byear <- c(1990,1995,2000,2005)
eyear <- c(1995,2000,2005,2010)
val <- c(3,1,5,6)
sdata <- tbl_df(data.frame(byear, eyear, val))
fdata <- tbl_df(data.frame(id, fyear))
test1 <- left_join(fdata, sdata, by = c("fyear" >= "byear","fyear" < "eyear"))
Run Code Online (Sandbox Code Playgroud)
我明白了
Run Code Online (Sandbox Code Playgroud)Error: cannot join on columns 'TRUE' x 'TRUE': index out of bounds
除非left_join能处理这个条件,但我的语法遗漏了什么?
计算使用 dplyr 访问 sql 表的行数的有效方法是什么。MWE 在下面使用 SQLite,但我使用 PostgreSQL 并且有同样的问题。基本上 dim() 不是很一致。我用了
dim()
Run Code Online (Sandbox Code Playgroud)
这适用于数据库中的模式(第一种情况),但当我从相同模式的 SQL 查询创建 tbl 时(第二种情况)不是很一致。我的行数以百万计,或者即使只有 1000 行,我也能看到这一点。我得到 NA 或 ??。有什么遗漏的吗?
#MWE
test_db <- src_sqlite("test_db.sqlite3", create = T)
library(nycflights13)
flights_sqlite <- copy_to(test_db, flights, temporary = FALSE, indexes = list(
c("year", "month", "day"), "carrier", "tailnum"))
flights_postgres <- tbl(test_db, "flights")
Run Code Online (Sandbox Code Playgroud)
第一种情况(来自直接模式的表)
flights_postgres
> flights_postgres
Source: postgres 9.3.5 []
From: flights [336,776 x 16]
year month day dep_time dep_delay arr_time arr_delay carrier tailnum flight origin dest air_time distance hour minute
1 2013 …Run Code Online (Sandbox Code Playgroud) 我试图在我的数据帧中选择一个变量子集,并重命名新数据帧中的变量.我有大量的变量需要重命名.我在用
dplyr::select
dplyr::select_
Run Code Online (Sandbox Code Playgroud)
由于我要重命名的变量数量,我在想是否应该使用字符串变量来重命名,但不确定它是否可能?使用字符串可以帮助我管理newname oldname映射.这是一个例子
dplyr::select
library(dplyr)
library(nycflights13)
set.seed(123)
data <- sample_n(flights, 3)
select(data,yr=year,mon=month,deptime=dep_time)
Run Code Online (Sandbox Code Playgroud)
我怎么能在字符串中传递this的参数,即newvariable = oldvariable参数然后使用
dplyr::select_
col_vector <- c("year", "month", "dep_time")
select_(data, .dots = col_vector)
Run Code Online (Sandbox Code Playgroud)
我想到的字符串是:
rename_vector <- c("yr=year","mon=month","deptime=dep_time")
Run Code Online (Sandbox Code Playgroud)
任何建议都会非常有帮助.
我tabstat在Stata中使用,并使用estpost和esttab输出到LaTeX.我有
tabstat
Run Code Online (Sandbox Code Playgroud)
按组显示统计信息.例如,
tabstat assets, by(industry) missing statistics(count mean sd p25 p50 p75)
Run Code Online (Sandbox Code Playgroud)
我的问题是tabstat(或其他Stata命令)是否有办法显示按平均值排序的输出,以便那些具有更高平均值的类别将位于顶部.默认情况下,Stata按industry我使用时的字母顺序显示tabstat.
我正在对多列求和,有些列有 NA。我在用
dplyr::mutate
Run Code Online (Sandbox Code Playgroud)
然后写出列的算术和以获得总和。但是列有 NA,我想将它们视为零。我能够让它与 rowSums 一起工作(见下文),但现在使用 mutate。使用 mutate 可以使其更具可读性,但也可以让我减去列。示例如下。
require(dplyr)
data(iris)
iris <- tbl_df(iris)
iris[2,3] <- NA
iris <- mutate(iris, sum = Sepal.Length + Petal.Length)
Run Code Online (Sandbox Code Playgroud)
如何确保 Petal.Length 中的 NA 在上述表达式中被处理为零?我知道使用 rowSums 我可以执行以下操作:
iris$sum <- rowSums(DF[,c("Sepal.Length","Petal.Length")], na.rm = T)
Run Code Online (Sandbox Code Playgroud)
但是使用 mutate 甚至可以更容易地设置 diff = Sepal.Length - Petal.Length。使用 mutate 完成此操作的建议方法是什么?
请注意,该帖子类似于以下 stackoverflow 帖子。
我正在寻找一种在R中的美国地图上给县添加阴影的方法。我有一个数字/字符县FIPS代码列表,可以将其输入作为参数。我只需要突出显示这些县-所以只需要阴影它们,就没有对应于这些县的值或变体。我试图抬头
library(choroplethr)
library(maps)
Run Code Online (Sandbox Code Playgroud)
和
county_choropleth(df_pop_county)
head(df_pop_county)
region value
1 1001 54590
2 1003 183226
3 1005 27469
4 1007 22769
5 1009 57466
6 1011 10779
Run Code Online (Sandbox Code Playgroud)
但是这些需要区域,价值对。例如,上面的fip代码和填充。有没有一种方法可以仅使用fipscode数据框来调用county_choropleth函数而不必使用值。这样,我就可以用一种颜色编码我的fips。使用Choroplethr在R中完成此任务的有效方法是什么?
我正在使用 Stata 运行固定效应模型,然后执行样本外预测。但似乎
xtreg
Run Code Online (Sandbox Code Playgroud)
其次是
predict yhat, xbu
Run Code Online (Sandbox Code Playgroud)
不预测样本外以及固定效应。有没有办法通过包含固定效应将 xtreg 用于样本外?插图:
webuse nlswork
xtset idcode year
regress ln_wage age if year <= 80
predict temp1
xtreg ln_wage age if year <= 80, fe
predict temp2, xbu
Run Code Online (Sandbox Code Playgroud)
就我而言,我需要预测 year = 81 的值。并且 temp2 为空的年数 > 80。阅读 xtreg 和 areg 的手册,似乎不可能进行样本外预测,尤其是对于 xbu——其中包括固定效应预测。可以理解,如果我使用年份固定效果没有意义,但如果我只是使用idcode应该可以吗?任何建议将不胜感激。或者关于如何获得解决方案的任何建议?
它似乎只针对 <= 2000 年的所有年份生成。也就是说,我只能生成样本中的预测。