小编Vin*_*woo的帖子

创建提示/应答系统以将数据输入到R中

我已经创建了一些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问题!

r

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

计算列子集上的行均值

给出一个示例数据框:

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的一致.

r dataframe

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

减少ggplot中的图例大小超出默认大小

我的目标是在包中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大小.

r legend ggplot2

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

R是否有通配符表达式(例如星号(*))?

我希望我不会遗漏一些明显的东西,但这是我的问题:

给出这样的数据

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)

所以基本上是一个外卡符号,它允许我将所有以特定字符标记开头的行子集.

r

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

R和ggplot-将x轴更改为Date可消除位置闪避

我一直在使用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

7
推荐指数
1
解决办法
1220
查看次数

R-从多列创建单个日期

我希望我能为你们提出一个简单的问题,但是在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)

我知道它不起作用,但我希望它可以解决我想要实现的目标.关于如何做到这一点的任何想法?

提前谢谢!

r

7
推荐指数
1
解决办法
7185
查看次数

根据行的值删除列

给出两个数据框:

 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)

row r dataframe

7
推荐指数
1
解决办法
1237
查看次数

R-仅对特定列进行平方

给定一个带有时间戳的数据集以及跟随它的几列数据

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)

r

6
推荐指数
2
解决办法
1200
查看次数

是否可以附加到现有文件的第一行?

我已经查看了几个能够将文本添加到现有数据文件(.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文件的开头,这样我的最新数据总是出现在第一行(到避免滚动到长文件的末尾以查看最新数据).

r append

6
推荐指数
1
解决办法
2755
查看次数

将气泡颜色指定为变量限制了ggplot中的选择

在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 =)参数则圆圈被填充.我知道这是因为我的圈子现在有很多颜色,但是我更喜欢将一个坚实的(黑色)圆圈作为我的传奇而不是开放的圆圈.有没有办法覆盖传奇并填充圆圈?

r legend ggplot2

6
推荐指数
1
解决办法
1480
查看次数

标签 统计

r ×10

dataframe ×2

ggplot2 ×2

legend ×2

append ×1

row ×1