我已经创建了一些R代码供那些对R一无所知的人使用(虽然我自己很漂亮).我一直让人们将初始数据粘贴到R控制台(结果混合),我希望为人们设置一种更友好的用户输入数据的方式.
理想情况下,有人可以坐在控制台上,键入命令,并提示有关如何输入数据的特定问题.
例如,一个人加载r并看到提示:
What is x value?
Run Code Online (Sandbox Code Playgroud)
该人员输入:
2
Run Code Online (Sandbox Code Playgroud)
下一个提示:
What is y value?
Run Code Online (Sandbox Code Playgroud)
人员类型:
3
Run Code Online (Sandbox Code Playgroud)
下一个提示:
What are T values?
Run Code Online (Sandbox Code Playgroud)
人员类型:
4,3,2,1
Run Code Online (Sandbox Code Playgroud)
下一个提示:
什么是V值?
人员类型:
4,5,6,9
Run Code Online (Sandbox Code Playgroud)
使用这4个新定义的变量(X,Y,T,V),R的下一步是运行预先编写的代码
X+Y
V+T
Run Code Online (Sandbox Code Playgroud)
在控制台中弹出答案
5
8 8 8 10
Run Code Online (Sandbox Code Playgroud)
每个人都很开心
我道歉,因为这不是一个可重现的代码问题,但我不知道如何让R问问题而不是我问R问题!
给出一个示例数据框:
C1<-c(3,2,4,4,5)
C2<-c(3,7,3,4,5)
C3<-c(5,4,3,6,3)
DF<-data.frame(ID=c("A","B","C","D","E"),C1=C1,C2=C2,C3=C3)
DF
ID C1 C2 C3
1 A 3 3 5
2 B 2 7 4
3 C 4 3 3
4 D 4 4 6
5 E 5 5 3
Run Code Online (Sandbox Code Playgroud)
创建包含ID列和每行平均值的第二个数据框的最佳方法是什么?像这样的东西:
ID Mean
A 3.66
B 4.33
C 3.33
D 4.66
E 4.33
Run Code Online (Sandbox Code Playgroud)
类似的东西:
RM<-rowMeans(DF[,2:4])
Run Code Online (Sandbox Code Playgroud)
我想保持手段与他们ID的一致.
我的目标是在包中ggplot使用并将它们组合成一个单独的绘图.grid.arrangegridExtra
我有一个问题,因为ggplot当我试图将这些地块并排放置时,我的传说(虽然适合单个地块的尺寸)太大了grid.arrange.生成的组合图减少了x轴,但保留了图例的原始大小.所以结果是一个非常瘦的情节,旁边是一个不必要的大传奇.所以我想减少每个情节中图例的大小,足以让我可以并排放置我的情节.或者可能会缩小它们以使它们进入实际的情节而不会过度专注.
V1<-rnorm(10)
V2<-rnorm(10)
V3<-rnorm(10)
DF<-data.frame(V1,V2,V3)
ggplot(DF,aes(x=V1,y=V2,size=V3))+
geom_point(fill='red',shape=21)+
theme_bw()+
scale_size(range=c(5,20))
Run Code Online (Sandbox Code Playgroud)
此绘图命令在绘图右侧生成标准图例大小.

我尝试过使用不同的主题元素:
+theme(legend.key.size = unit(0.5, "cm")
Run Code Online (Sandbox Code Playgroud)
要么
+theme(legend.key.width=unit(0.3,"cm"),legend.key.height=unit(0.3,"cm"),legend.position = c(0.7, 0.8))
Run Code Online (Sandbox Code Playgroud)
虽然我可以使用这些主题命令使图例更大,但我不能使图例小于默认图例.那么有没有办法将图例缩小到超出默认大小?
我还可以更改我的pdf设备的默认大小,使其更宽,并适应大型传说,但我现在想使用标准的pdf大小.
我希望我不会遗漏一些明显的东西,但这是我的问题:
给出这样的数据
Data1=
Name Number
AndyBullxxx 12
AlexPullxcx 14
AndyPamxvb 56
RickRalldfg 34
AndyPantert 45
SamSaltedf 45
Run Code Online (Sandbox Code Playgroud)
我想能够拉出所有以"Andy"开头的行
subset(Data1,Name=="Andy*")
AndyBullxxx 12
AndyPamxvb 56
AndyPantert 45
Run Code Online (Sandbox Code Playgroud)
所以基本上是一个外卡符号,它允许我将所有以特定字符标记开头的行子集.
我一直在使用ggplot创建绘图,我总是喜欢水平偏移我的数据点,因此误差条不会重叠.我发现当我使用日期数据作为我的x轴时,我失去了偏移数据点的能力.
DF=data.frame(Date=c("2006-09-01", "2007-09-01", "2008-09-01" ,"2009-09-01", "2010-01-01" ,"2011-01-01"),Count=c(1,2,3,4,5,6,2,4,6,8,10,12),Type=c('A','A','A','A','A','A','B','B','B','B','B','B'))
Run Code Online (Sandbox Code Playgroud)
如果我使用像这样的ggplot绘制上面的数据框,则这些点是偏移的
dodge=position_dodge(.5)
ggplot(data=DF,aes(x=Date,y=Count,group=Type))+geom_point(position=dodge)
Run Code Online (Sandbox Code Playgroud)
但是,如果我将日期数据指定为实际日期
DF$Date=as.Date(DF$Date)
ggplot(data=DF,aes(x=Date,y=Count,group=Type))+geom_point(position=dodge)
Run Code Online (Sandbox Code Playgroud)
这些点不再被抵消,即使我指定它们
我过去通过将日期数据仅限于"年"并将其视为数字来避免此问题.但是现在我需要包含月份信息(我包括我的约会日期,因为"as.Date如果我不包含它会有点时髦).
所以任何人都可以告诉我,如果有一种方法我可以使用ggplot绘制时间序列,这将允许我偏移我的数据点和误差条.
我希望我能为你们提出一个简单的问题,但是在R中使用日期对我来说是个难题
我有一个看起来像这样的时间序列数据
Month Day Year Hour Min Sec Data
2 1 2012 1 0 0 56
2 1 2012 1 1 0 57
2 1 2012 1 2 0 52
2 1 2012 1 3 0 55
2 1 2012 1 4 0 57
Run Code Online (Sandbox Code Playgroud)
我希望从多列创建一个日期,然后按日期绘制数据列.我绝望的过度简化的代码看起来像这样:
Date1<-c(Month,Day,Year,Hour,Min,Sec)# For when hourly data is important
Date2<-c(Month,Day,Year) #For when daily data is important
as.Date(Date1)
as.Date(Date2)
plot(Data~ Date1)
Run Code Online (Sandbox Code Playgroud)
我知道它不起作用,但我希望它可以解决我想要实现的目标.关于如何做到这一点的任何想法?
提前谢谢!
给出两个数据框:
C1<-c(3,4,4,4,5)
C2<-c(3,7,3,4,5)
C3<-c(5,6,3,7,4)
DF<-data.frame(C1=C1,C2=C2,C3=C3)
DF
C1 C2 C3
1 3 3 5
2 4 7 6
3 4 3 3
4 4 4 7
5 5 5 4
Run Code Online (Sandbox Code Playgroud)
和
V1<-c(3,2,2,4,5)
V2<-c(3,7,3,5,2)
V3<-c(5,2,5,7,5)
V4<-c(1,1,2,3,4)
V5<-c(1,2,6,7,5)
DF2<-data.frame(V1=V1,V2=V2,V3=V3,V4=V4,V5=V5)
DF2
V1 V2 V3 V4 V5
1 3 3 5 1 1
2 2 7 2 1 2
3 2 3 5 2 6
4 4 5 7 3 7
5 5 2 5 4 5
Run Code Online (Sandbox Code Playgroud)
查看两个数据帧中的每个等效行,C3中的值与我想要在DF2中的同一行中删除的列数之间存在关系.
C3中的值与要删除的DF2中的列数之间的关系如下所示
If C3?7 drop V5
If C3=6.0:6.9 …Run Code Online (Sandbox Code Playgroud) 给定一个带有时间戳的数据集以及跟随它的几列数据
data=
hour V1 V2 V3
1 2012-01-19 08:00:00 0.04551064 0.002851064 0.01842553
2 2012-01-19 09:00:00 -0.05305000 -0.052266667 -0.07455000
3 2012-01-19 10:00:00 -0.07518333 -0.101333333 -0.10670000
4 2012-01-19 11:00:00 -0.09195000 -0.099383333 -0.11176667
5 2012-01-19 12:00:00 -0.07743333 -0.074000000 -0.09106667
6 2012-01-19 13:00:00 -0.10978333 -0.096200000 -0.11343333
Run Code Online (Sandbox Code Playgroud)
我想把V1-V3列给我这个
data_sq=
hour V1 V2 V3
1 2012-01-19 08:00:00 0.002071218 8.128565e-06 0.0003395002
2 2012-01-19 09:00:00 0.002814303 2.731804e-03 0.0055577025
3 2012-01-19 10:00:00 0.005652534 1.026844e-02 0.0113848900
4 2012-01-19 11:00:00 0.008454803 9.877047e-03 0.0124917878
5 2012-01-19 12:00:00 0.005995921 5.476000e-03 0.0082931378
6 2012-01-19 …Run Code Online (Sandbox Code Playgroud) 我已经查看了几个能够将文本添加到现有数据文件(.csv或.txt)的函数,例如write.table,write.lines或sink.
当append参数= TRUE时,新数据总是在文件的最后一个现有行之后添加.是否可以将数据添加到第一行(标题下方)的现有文件中 - AKA与追加相反?
给定一个数据框:
DF <- as.data.frame(matrix(seq(20),nrow=5,ncol=4))
colnames(DF) <- c("A", "B", "C", "D")
write.table(DF, "DF.csv", row.names=FALSE, sep=",")
Run Code Online (Sandbox Code Playgroud)
我可以像这样在最后一行添加一个新数据框
A <- 1
A <- data.frame(A)
A$B <- 1
A$C <- 1
A$D <- 1
write.table(A, "DF.csv", row.names=FALSE, sep=",", append=TRUE, col.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
哪个接近我想要的.但我真的希望将上面的行添加到DF.csv的第一行(在标题的正下方),就像这样
A B C D
1 1 1 1
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我不打算在R中的数据框中添加一行.我希望在R环境之外的文件的开头添加一行.正如append可以用来将数据添加到外部.csv文件的末尾,我希望将数据"附加"到.csv文件的开头,这样我的最新数据总是出现在第一行(到避免滚动到长文件的末尾以查看最新数据).
在ggplot中创建一个气泡图时,我在调整两个独立的美学选择时遇到了问题,我确信它与我编写情节的方式有关.在下图中,如果我根据变量分配气泡的颜色,如下所示:
V1<-rnorm(50)
V2<-rnorm(50)
V3<-c(rep("A",10),rep("B",10),rep("C",10),rep("D",10),rep("E",10))
V4<-V2+.1
V5<-c(rep("BF1",9),rep("BF2",11),rep("BF3",8),rep("BF4",12),rep("BF5",10))
DF<-data.frame(V1,V2,V3,V4,V5)
ggplot(DF,aes(x=V1,y=V2,size=V4,label=DF$V3,fill=V5),legend=FALSE)+
scale_y_continuous( limits = c(-3, 3))+
scale_x_continuous( limits = c(-3, 3))+
geom_point(color="black",shape=21,alpha=0.5)+
geom_text(size=2)+
theme_bw()+
scale_size(range = c(5, 20))+
scale_colour_brewer(palette="Blues")
Run Code Online (Sandbox Code Playgroud)

我对这个情节的两个问题是
1-我想将默认的颜色托盘更改为不太柔和的颜色.我认为使用scale_color_brewer参数会将颜色更改为"Blues",但显然情况并非如此.
2-其次,V4的图例现在有空圆圈,而没有aes(fill =)参数则圆圈被填充.我知道这是因为我的圈子现在有很多颜色,但是我更喜欢将一个坚实的(黑色)圆圈作为我的传奇而不是开放的圆圈.有没有办法覆盖传奇并填充圆圈?