小编Sam*_*rke的帖子

ggplot2折线图给出了"geom_path:每组只包含一个观察.你需要调整群体美感吗?"

使用此数据框("df"):

year pollution
1 1999 346.82000
2 2002 134.30882
3 2005 130.43038
4 2008  88.27546
Run Code Online (Sandbox Code Playgroud)

我尝试创建这样的折线图:

  plot5 <- ggplot(df, aes(year, pollution)) +
           geom_point() +
           geom_line() +
           labs(x = "Year", y = "Particulate matter emissions (tons)", title = "Motor vehicle emissions in Baltimore")
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

geom_path:每组只包含一个观察.你需要调整群体美感吗?

即使我想要折线图,图表也会显示为散点图.我试图取代geom_line()geom_line(aes(group = year)),但没有奏效.

在答案中,我被告知要将年份转换为因子变量.我做了,问题仍然存在.这是输出str(df)dput(df):

'data.frame':   4 obs. of  2 variables:
 $ year     : num  1 2 3 4
 $ pollution: num [1:4(1d)] 346.8 134.3 130.4 88.3
  ..- attr(*, …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

144
推荐指数
3
解决办法
16万
查看次数

如何创建空R矢量以添加新项目

我想在Python中使用R,由模块Rpy2提供.我注意到R具有非常方便的[]操作,您可以通过它来提取特定的列或行.我怎么能通过Python脚本实现这样的功能?

我的想法是创建一个R向量并将那些想要的元素添加到这个向量中,这样最终的向量与R中的相同.我创建了一个seq(),但似乎它有一个初始数字1,所以最终结果总是从数字1开始,这不是我想要的.那么,有更好的方法吗?

python r vector rpy2

85
推荐指数
5
解决办法
22万
查看次数

重新排序大型数据框中的列

使用以下示例数据帧:

a <-  c(1:5)
b <- c("Cat", "Dog", "Rabbit", "Cat", "Dog")
c <- c("Dog", "Rabbit", "Cat", "Dog", "Dog")
d <- c("Rabbit", "Cat", "Dog", "Dog", "Rabbit")
e <- c("Cat", "Dog", "Dog", "Rabbit", "Cat")
f <- c("Cat", "Dog", "Dog", "Rabbit", "Cat")

df <- data.frame(a,b,c,d,e,f)
Run Code Online (Sandbox Code Playgroud)

我想调查如何重新排序列而不必输入所有列名,即, df[,c("a","d","e","f","b","c")]

我怎么说我想要列f和列f后的列?(仅引用我要移动的列或列范围?).

非常感谢您的帮助.

r

24
推荐指数
4
解决办法
4万
查看次数

将所有列转换为data.frame中的字符

考虑具有混合数据类型的data.frame.

出于奇怪的目的,用户需要将所有列转换为字符.怎么做得最好?解决问题的整合尝试是这样的:

map(mtcars,as.character) %>% map_df(as.list) %>% View()
c2<-map(mtcars,as.character) %>% map_df(as.list)
Run Code Online (Sandbox Code Playgroud)

当我打电话时str(c2),应该说一个包含所有字符的tibble或data.frame.

另一种选择是对一些参数设置write.csv()write_csv()实现生成的文件输出同样的事情.

r dataframe tidyverse

22
推荐指数
2
解决办法
2万
查看次数

AWS Glue to Redshift:是否可以替换,更新或删除数据?

以下是关于我如何设置的一些要点:

  • 我有上传到S3的CSV文件和一个Glue爬虫设置来创建表和模式.
  • 我有一个Glue作业设置,它使用JDBC连接将数据从Glue表写入我们的Amazon Redshift数据库.Job还负责映射列并创建redshift表.

通过重新运行作业,我在redshift中获得重复的行(正如预期的那样).但是,有没有办法在插入新数据之前替换或删除行,使用密钥或胶水中的分区设置?

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job

from awsglue.dynamicframe import DynamicFrame
from awsglue.transforms import SelectFields

from pyspark.sql.functions import lit

## @params: [TempDir, JOB_NAME]
args = getResolvedOptions(sys.argv, ['TempDir','JOB_NAME'])

sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args['JOB_NAME'], args)

columnMapping = [
    ("id", "int", "id", "int"),
    ("name", "string", "name", "string"),
]

datasource1 = glueContext.create_dynamic_frame.from_catalog(database = "db01", table_name = …
Run Code Online (Sandbox Code Playgroud)

jdbc amazon-web-services pyspark aws-glue

22
推荐指数
4
解决办法
1万
查看次数

从数据框中删除零值的列

我有一个data.frame:

SelectVar
     a   b  c   d   e   f   g   h   i j k l ll m n o p  q   r
1 Dxa8 Dxa8 0 Dxa8 Dxa8 0 Dxa8 Dxa8 0 0 0 0  0 0 0 0 0 Dxc8 0
2 Dxb8 Dxc8 0 Dxe8 Dxi8 0 tneg tpos 0 0 0 0  0 0 0 0 0 Dxi8 0
Run Code Online (Sandbox Code Playgroud)

我想删除数据框中两行中零值的列,因此它产生如下数据框:

SelectVar
     a   b    d    e    g   h     q   
1 Dxa8 Dxa8 Dxa8 Dxa8 Dxa8 Dxa8  Dxc8 
2 Dxb8 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

19
推荐指数
5
解决办法
4万
查看次数

dplyr rename - 错误:`new_name` = old_name必须是符号或字符串,而不是公式

我正在尝试重命名列,dplyr::rename()R正在返回此错误,我无法在网上找到任何地方.

Error: `new_name` = old_name must be a symbol or a string, not formula

具有2列数据框的可重现示例:

library(dplyr)
df <- data.frame(old_name = seq(1:10), x = seq(1:10))
df %>% dplyr::rename(new_name = old_name)
Run Code Online (Sandbox Code Playgroud)

会话信息:

> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-apple-darwin17.2.0 (64-bit)
Running under: macOS High Sierra 10.13.1

Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] dplyr_0.7.4

loaded via a namespace (and not attached): …
Run Code Online (Sandbox Code Playgroud)

r rename plyr dplyr rlang

19
推荐指数
2
解决办法
2961
查看次数

将单个dplyr tbl_df行提取为向量

如何从tbl_df一个向量中提取单行?带[]括号的简单子集产生1行tbl_df:

library(dplyr)
dat <- as_data_frame(mtcars)

dat[2, ]

Source: local data frame [1 x 11]

    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
  (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1    21     6   160   110   3.9 2.875 17.02     0     1     4     4
Run Code Online (Sandbox Code Playgroud)

类似的问题是将dplyr tbl列提取为向量,但(我认为)有一些不同的解决方案.

r dplyr

17
推荐指数
2
解决办法
7105
查看次数

有一个lubridate减法只返回一个数值

我有一个变量叫做Started人类受试者参加研究dos1的日期和另一个被称为受试者最后接受手术的日期.我想知道从他们上次手术到入学当天有多少个月.我试过了:

as.period(syrrupan$Started-syrrupan$dos1,units=c("month"))
Run Code Online (Sandbox Code Playgroud)

我希望这给我一些类似的东西:

14, 18, 1, 26 
Run Code Online (Sandbox Code Playgroud)

每个数字是月数.

相反,我得到:

1 year, -4 months, -5 days and -1 hours   1 year, -5 months, -23 days and -1 hours   1 year, -7 months, 2 days and -1 hours   1 year, -8 months, -28 days and 1 hour   1 year, -7 months, -23 days and 1 hour.   
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到几个月的数值?

r date package lubridate

16
推荐指数
3
解决办法
2万
查看次数

使用包readxl将xlsx数据导入R时指定列类型

我正在将xlsx2007表导入到R 3.2.1patched使用包readxl 0.1.0Windows 7 64.表的大小大约为25,000行乘200列.

功能read_excel()是一种享受.我唯一的问题是它将列类(数据类型)分配给稀疏填充的列.例如,给定列可以是20,000行的NA,然后在行20,001上取字符值.read_excel()在扫描列的前n行并NAs仅查找时,似乎默认为列类型数字.导致问题的数据是指定为数字的列中的字符.达到错误限制时,执行停止.我实际上想要稀疏列中的数据,因此将错误限制设置得更高并不是解决方案.

我可以通过查看抛出的警告来识别麻烦的列.并且read_excel()可以通过col_types根据包docs 设置参数来断言列的数据类型:

或者NULL猜测从电子表格或字符向量含有blank,numeric,datetext.

但是,这是否意味着我必须构建一个长度为200的向量,几乎每个位置都有一些位置,blank并且text对应于有问题的列?

可能有一种方法可以在几行R代码中执行此操作.创建一个所需长度的向量,并用blanks 填充它.也许是另一个包含要强制的列数的向量text,然后......或者可能只调用read_excel()其猜测不符合要求的列.

我很感激任何建议.

提前致谢.

r readxl

16
推荐指数
4
解决办法
1万
查看次数