使用此数据框("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) 我想在Python中使用R,由模块Rpy2提供.我注意到R具有非常方便的[]
操作,您可以通过它来提取特定的列或行.我怎么能通过Python脚本实现这样的功能?
我的想法是创建一个R向量并将那些想要的元素添加到这个向量中,这样最终的向量与R中的相同.我创建了一个seq()
,但似乎它有一个初始数字1,所以最终结果总是从数字1开始,这不是我想要的.那么,有更好的方法吗?
使用以下示例数据帧:
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后的列?(仅引用我要移动的列或列范围?).
非常感谢您的帮助.
考虑具有混合数据类型的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()
实现生成的文件输出同样的事情.
以下是关于我如何设置的一些要点:
通过重新运行作业,我在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) 我有一个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) 我正在尝试重命名列,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) 如何从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列提取为向量,但(我认为)有一些不同的解决方案.
我有一个变量叫做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)
我怎样才能得到几个月的数值?
我正在将xlsx
2007表导入到R 3.2.1patched
使用包readxl 0.1.0
下Windows 7 64
.表的大小大约为25,000行乘200列.
功能read_excel()
是一种享受.我唯一的问题是它将列类(数据类型)分配给稀疏填充的列.例如,给定列可以是20,000行的NA,然后在行20,001上取字符值.read_excel()
在扫描列的前n行并NAs
仅查找时,似乎默认为列类型数字.导致问题的数据是指定为数字的列中的字符.达到错误限制时,执行停止.我实际上想要稀疏列中的数据,因此将错误限制设置得更高并不是解决方案.
我可以通过查看抛出的警告来识别麻烦的列.并且read_excel()
可以通过col_types
根据包docs 设置参数来断言列的数据类型:
或者NULL
猜测从电子表格或字符向量含有blank
,numeric
,date
或text
.
但是,这是否意味着我必须构建一个长度为200的向量,几乎每个位置都有一些位置,blank
并且text
对应于有问题的列?
可能有一种方法可以在几行R
代码中执行此操作.创建一个所需长度的向量,并用blank
s 填充它.也许是另一个包含要强制的列数的向量text
,然后......或者可能只调用read_excel()
其猜测不符合要求的列.
我很感激任何建议.
提前致谢.