Tag: r

用ggplot()改变线条的颜色

我不使用ggplot2那么多,但是今天我想我会在一些图表上使用它。 但我不知道如何手动控制geom_line()颜色 我确定我忽略了一些简单的东西,但是这是我的testing代码: x <- c(1:20, 1:20) variable <- c(rep("y1", 20), rep("y2", 20) ) value <- c(rnorm(20), rnorm(20,.5) ) df <- data.frame(x, variable, value ) d <- ggplot(df, aes(x=x, y=value, group=variable, colour=variable ) ) + geom_line(size=2) d 这给了我预期的输出: 我以为我所要做的就是这样简单的事情: d + scale_fill_manual(values=c("#CC6666", "#9999CC")) 但是这并没有改变。 我错过了什么?

结合mutate和条件值

在一个包含四列的大数据框(“myfile”)中,我必须根据前四列添加一个包含值的第五列。 最近我已经成为dplyr的粉丝,主要是因为它在大型数据集中的速度。 所以我想知道如果我可以使用mutate函数来处理我的问题。 我的dataframe(实际上是一个更短的版本)看起来有点像这样: V1 V2 V3 V4 1 1 2 3 5 2 2 4 4 1 3 1 4 1 1 4 4 5 1 3 5 5 5 5 4 第五列(V5)的值基于一些有条件的规则: if (V1==1 & V2!=4){ V5 <- 1 } else if (V2==4 & V3!=1){ V5 <- 2 } else { V5 <- […]

为什么使用c()来定义向量?

c不是英文中vector的缩写,为什么用c()在R中定义一个vector? v1<- c(1,2,3,4,5)

R Apply()函数在特定的数据框列上

我想要在数据框上使用apply函数,但是只将函数应用到最后5列。 B<- by(wifi,(wifi$Room),FUN=function(y){apply(y, 2, A)}) 这将A应用于y的所有列 B<- by(wifi,(wifi$Room),FUN=function(y){apply(y[4:9], 2, A)}) 这只适用于A的第4-9列,但B条从前3列的总回报…我仍然希望这些,我只是不希望A适用于他们。 wifi[,1:3]+B 也不会做我想要的/想要的。

如何增加ggplot2中条形图中的条形图之间的空间?

如何增加ggplot2中条形图中的条形图之间的空间?

如何获取列表中每个元素的第二个子元素

我知道我之前遇到过这个问题,但是我现在有一点心理障碍。 因为我找不到它,所以我会在这里张贴,所以我可以find下一次。 我有一个数据框,其中包含代表一个ID标签的字段。 这个标签有两个部分,一个字母前缀和一个数字后缀。 我想分开它并创build两个新的字段与这些值中。 structure(list(lab = c("N00", "N01", "N02", "B00", "B01", "B02", "Z21", "BA01", "NA03")), .Names = "lab", row.names = c(NA, -9L ), class = "data.frame") df$pre<-strsplit(df$lab, "[0-9]+") df$suf<-strsplit(df$lab, "[AZ]+") 这使 lab pre suf 1 N00 N , 00 2 N01 N , 01 3 N02 N , 02 4 B00 B , 00 […]

dplyr filter:获取具有最小variables的行,但只有第一个如果多个最小值

我想用dplyr做一个分组filter,在每个组中只有那个返回variablesx的最小值的行。 我的问题是:正如所料,在多重最小值的情况下返回所有具有最小值的行。 但就我而言,如果存在多个最小值, 我只想要第一行 。 这是一个例子: df <- data.frame( A=c("A", "A", "A", "B", "B", "B", "C", "C", "C"), x=c(1, 1, 2, 2, 3, 4, 5, 5, 5), y=rnorm(9) ) library(dplyr) df.g <- group_by(df, A) filter(df.g, x == min(x)) 正如预期的那样,所有的最小值都会返回 Source: local data frame [6 x 3] Groups: A A xy 1 A 1 -1.04584335 2 […]

重复data.frame的行

我想重复一个data.frame的行,每个N次。 结果应该是一个新的data.frame (使用nrow(new.df) == nrow(old.df) * N )保持列的数据types。 N = 2的示例: ABC ABC 1 ji 100 1 ji 100 –> 2 ji 100 2 KP 101 3 KP 101 4 KP 101 所以,每行重复2次,字符保持字符,因素保持因素,数字保持数字,… … – 我第一次尝试使用apply apply(old.df, 2, function(co) rep(co, each = N)) ,但是这个将我的值转换为字符,我得到: ABC [1,] "j" "i" "100" [2,] "j" "i" "100" [3,] "K" […]

导出没有col.names的CSV

我需要一个data.frame并将其导出到CSV文件(或其他东西,但CSV似乎是最简单的格式良好的格式),所以我可以将其导入到SQLite数据库。 但是,它看起来像write.csv()要求我写一个标题行,而SQLite的.import命令要求我没有标题行。 所以这是一个不匹配的。 以下是如果我试图省略标题行会发生什么情况: > write.csv(mydf, "/tmp/mydf.csv", row.names=F, col.names=F) Warning message: In write.csv(mydf, "/tmp/mydf.csv", row.names = F, col.names = F) : attempt to set 'col.names' ignored 我不得不想知道为什么它首先执行 – 手册说: “这些包装是故意不灵活的:它们的devise是为了确保使用正确的约定写一个有效的文件。试图改变append , col.names , sep , dec或qmethod被忽略,并带有警告。 但是我不知道规范或其他地方需要列名 – 实际上,大多数工具(Excel等)并没有特别对待它们。

用数据框中的NAreplace字符值

我有一个数据框包含(在随机的地方)一个字符值(比如说"foo" ),我想用NA代替。 在整个数据框架中,最好的方法是什么?