我有一个非常简单的问题,我正在努力寻找答案.我希望这里有人可以帮助我.
下面给出了一个示例数据框:
a <- c(1:10)
b <- c(10:1)
df <- data.frame(a,b)
library(ggplot2)
g = ggplot(data=df) + geom_point(aes(x=a, y=b)) +
xlab("x axis")
g
Run Code Online (Sandbox Code Playgroud)
我只是想了解如何更改轴标题和轴标签的文本大小.
我正在做一个相对简单的分析,我把它放在一个函数中,在特定文件夹中的所有文件上.我想知道是否有人有任何提示可以帮助我在许多不同的文件夹上自动执行该过程.
files <- (Sys.glob("*.csv"))
...我从使用R找到列出具有指定扩展名的所有文件
然后以下代码将所有这些文件读入R.
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
Run Code Online (Sandbox Code Playgroud)
...来自操纵R中的多个文件
但是这些文件似乎是作为一个连续列表而不是单个文件读取的...如何更改脚本以将特定文件夹中的所有csv文件作为单独的数据帧打开?
其次,假设我可以单独读取所有文件,如何一次性完成所有这些数据帧的功能.例如,我创建了四个小型数据框,以便我可以说明我想要的内容:
Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1)))
Df.2 <- data.frame(A = c(1:6),B = (c(2,3,4,5,1,1)))
Df.3 <- data.frame(A = c(4,6,8,0,1,11),B = (c(7,6,5,9,1,15)))
Df.4 <- data.frame(A = c(4,2,6,8,1,0),B = (c(3,1,9,11,2,16)))
Run Code Online (Sandbox Code Playgroud)我还编写了一个示例函数:
Summary<-function(dfile){
SumA<-sum(dfile$A)
MinA<-min(dfile$A)
MeanA<-mean(dfile$A)
MedianA<-median(dfile$A)
MaxA<-max(dfile$A)
sumB<-sum(dfile$B)
MinB<-min(dfile$B)
MeanB<-mean(dfile$B)
MedianB<-median(dfile$B)
MaxB<-max(dfile$B)
Sum<-c(sumA,sumB)
Min<-c(MinA,MinB)
Mean<-c(MeanA,MeanB)
Median<-c(MedianA,MedianB)
Max<-c(MaxA,MaxB)
rm(sumA,sumB,MinA,MinB,MeanA,MeanB,MedianA,MedianB,MaxA,MaxB)
Label<-c("A","B")
dfile_summary<-data.frame(Label,Sum,Min,Mean,Median,Max)
return(dfile_summary)}
Run Code Online (Sandbox Code Playgroud)
我通常会使用以下命令将函数应用于每个单独的数据帧.
Df1.summary <-Summary(dfile)
有没有办法,而不是将函数应用于所有数据框,并使用摘要表中的数据框的标题(即Df1.summary).
非常感谢,
凯蒂
我正在处理一个大型数据集,其中一些行包含NA,另一些包含空白:
df <- data.frame(ID = c(1:7),
home_pc = c("","CB4 2DT", "NE5 7TH", "BY5 8IB", "DH4 6PB","MP9 7GH","KN4 5GH"),
start_pc = c(NA,"Home", "FC5 7YH","Home", "CB3 5TH", "BV6 5PB",NA),
end_pc = c(NA,"CB5 4FG","Home","","Home","",NA))
Run Code Online (Sandbox Code Playgroud)
如何一次性删除NA和空白(在start_pc和end_pc列中)?我过去曾用过:
df<- df[-which(is.na(df$start_pc)), ]
Run Code Online (Sandbox Code Playgroud)
...删除NA - 是否有类似的命令来删除空白?
我有一个数据帧,我希望舍入所有数字(准备导出).这必须是直截了当的,但我遇到了问题,因为数据帧的某些位不是数字.例如,我想在下面的例子中将数字四舍五入到最接近的整数:
ID = c("a","b","c","d","e")
Value1 = c("3.4","6.4","8.7","1.1","0.1")
Value2 = c("8.2","1.7","6.4","1.9","10.3")
df<-data.frame(ID,Value1,Value2)
Run Code Online (Sandbox Code Playgroud)
谁能帮我吗?我可以围绕单个列(例如round(df$Value1, 2)),但我想围绕一个包含一些非数字列的整个表.
在使用ggplot2生成图形的同时,我有一些很长的图例名称,我希望将它们包含在两行中.例如:
a <- (1:10)
b <- c(1,1.5,2,4,5,5.3,7,9,9.5,9.8)
places = c("Birmingham","Chester-le-street","Cambridge", "Newcastle-upon-Tyne","Peterborough","Cambridge", "Newcastle-upon-Tyne","Peterborough","Liverpool","Stratford-upon-Avon")
df1 = data.frame(a,b,places)
library(ggplot2)
i = ggplot(df1, aes(x=a, y=b)) + geom_point(aes(colour = places), size=3) + opts(legend.position="bottom")
Run Code Online (Sandbox Code Playgroud)
当盒子设置在底部时,我该如何包装图例项目 - 比如2或3行?目前,传奇的七个项目彼此相邻.我希望它们显示在两行中(比如顶行的四个城镇和第二行的三个城镇).
提前谢谢了.
我正在使用R来绘制一些数据.
Date <- c("07/12/2012 05:00:00", "07/12/2012 06:00:00", "07/12/2012 07:00:00",
"07/12/2012 08:00:00","07/12/2012 10:00:00","07/12/2012 11:00:00")
Date <- strptime(Date, "%d/%m/%Y %H:%M")
Counts <- c("0","3","10","6","5","4")
Counts <- as.numeric(Counts)
df1 <- data.frame(Date,Counts,stringsAsFactors = FALSE)
library(ggplot2)
g = ggplot(df1, aes(x=Date, y=Counts)) + geom_line(aes(group = 1))
g
Run Code Online (Sandbox Code Playgroud)
如果时间中断,我如何要求R不要将数据绘制成连续线?我通常每小时都有一个数据点,但有时会有一个休息时间(早上8点到10点之间).在这些点之间,我不希望线路连接.这可能在R?
编辑
非常感谢这里的回复.我的数据现在间隔为10秒,我希望使用这些数据进行相同的分析.
df <- structure(list(Date = c("11/12/2012", "11/12/2012", "11/12/2012",
"11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012",
"11/12/2012", "11/12/2012", "11/12/2012", "11/12/2012"),
Time = c("20:16:00", "20:16:10", "20:16:20", "20:16:30",
"20:16:40", "20:16:50", "20:43:30", "20:43:40",
"20:43:50", "20:44:00", "20:44:10"),
Axis1 = c(181L, 14L, 65L, 79L, 137L, 104L, 7L, …Run Code Online (Sandbox Code Playgroud) 使用以下示例数据帧:
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后的列?(仅引用我要移动的列或列范围?).
非常感谢您的帮助.
对于包含纵向和纬度坐标对的集合以及对象在其中的时间的示例数据框:
bout <- structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "02/02/2013", class = "factor"),
Time = structure(1:30, .Label = c("07:55:40", "07:55:50",
"07:56:00", "07:56:10", "07:56:20", "07:56:30", "07:56:40",
"07:56:50", "07:57:00", "07:57:10", "07:57:20", "07:57:30",
"07:57:40", "07:57:50", "07:58:00", "07:58:10", "07:58:20",
"07:58:30", "07:58:40", "07:58:50", "07:59:00", "07:59:10",
"07:59:20", "07:59:30", "07:59:40", "07:59:50", "08:00:00",
"08:00:10", "08:00:20", "08:00:30"), class = "factor"), Axis1 …Run Code Online (Sandbox Code Playgroud) 我有一个简单的数据框:
D <- c("2012/12/14", "2012/12/14")
Time <- c("18:40:37", "18:40:48")
df1 <- data.frame(D, Time)
Run Code Online (Sandbox Code Playgroud)
我希望将两列日期和时间信息合并为一个,最好是日,月,年,时间的格式.
我该怎么做呢?
我有一个简单的数据框。我想从中添加另一列来记录时间(小时和分钟,采用 24 小时制)。然后我将根据变量绘制此列的图表。由于日期都相同,我只对时间感兴趣。这是我到目前为止所尝试过的。
a <- c(1:6)
b <- c("05/12/2012 05:00","05/12/2012 06:55","05/12/2012 07:10",
"05/12/2012 10:23", "05/12/2012 11:43","05/12/2012 13:04")
c <-c("0","0","0","1","1","1")
df1 <- data.frame(a,b,c,stringsAsFactors = FALSE)
a <- df1$a
b <- strptime(df1$b, "%d/%m/%Y %H:%M")
c <- as.numeric(df1$c)
hour <- as.numeric(format(b, "%H"))
min <- as.numeric(format(b, "%M"))
date <- format(b, "%x")
time <- hour + min
df2 <- data.frame(a, b, c, hour, min, date, time)
Run Code Online (Sandbox Code Playgroud)
这里建议我通过将数字分开,转换成类似的单位,然后相加来手动转换分钟和小时。然而我很挣扎,因为早上 5 点只是被导入为 5。
如果有人可以建议我如何正确地做到这一点,我将非常感激。