Tag: r

是否有一个内置的function来查找模式?

在R中, mean()和median()是符合你期望的标准函数。 mode()告诉你对象的内部存储模式,而不是在其参数中出现最多的值。 但是是否有一个标准的库函数来实现向量(或列表)的统计模式?

统计每个组内的行数

我有一个数据框,我想统计每个组内的行数。 我正常使用aggregate函数来aggregate数据如下: df2 <- aggregate(x ~ Year + Month, data = df1, sum) 现在,我想统计观察,但似乎无法find合适的论据。 直觉上,我认为这将如下: df2 <- aggregate(x ~ Year + Month, data = df1, count) 但是,没有这样的运气。 有任何想法吗? 一些玩具数据: set.seed(2) df1 <- data.frame(x = 1:20, Year = sample(2012:2014, 20, replace = TRUE), Month = sample(month.abb[1:3], 20, replace = TRUE))

ifelse每次都真的计算两个向量吗? 它慢吗?

ifelse是否真的计算了yes和novector – 如在每个vector的整体? 还是只是从每个vector计算一些值? 另外, ifelse真的那么慢?

通过名称删除数据框列

我想从数据框中删除一些列。 我知道我们可以使用类似下面的方法单独删除它们: df$x <- NULL 但我希望用更less的命令来做到这一点。 另外,我知道我可以像这样使用整数索引来删除列: df <- df[ -c(1, 3:6, 12) ] 但是我担心我的variables的相对位置可能会改变。 鉴于R是多么强大,我认为可能比逐一删除每一列更好。

计算组的平均值(或其他汇总统计)并分配给原始数据

我想计算分组variables(“组”)每个级别内的数值variables(“值”)的mean (或任何其他长度为1的摘要统计,例如, min , max , length , sum )。 汇总统计信息应分配给与原始数据具有相同长度的新variables。 也就是说,原始数据的每一行都应该有一个对应于当前组值的值 – 数据集不应该被折叠为每组一行。 例如,考虑组mean : 之前 id group value 1 a 10 2 a 20 3 b 100 4 b 200 后 id group value grp.mean.values 1 a 10 15 2 a 20 15 3 b 100 150 4 b 200 150

左alignment两个graphics边(ggplot)

我正在使用ggplot,并有两个图表,我想要显示在彼此之上。 我使用grid.arrange的grid.arrange来堆叠它们。 问题是我希望graphics的左边缘alignment以及右边缘,而不pipe轴标签。 (问题出现是因为一个图的标签很短而另一个图的标签长)。 问题: 我该怎么做? 我不嫁给grid.arrange,但ggplot2是必须的。 我试过了: 我试着用宽度和高度以及ncol和nrow来制作一个2 x 2的网格,并将视觉对象放在对angular上,然后用宽度进行播放,但是我不能在对angular看到视觉效果。 require(ggplot2);require(gridExtra) A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip() B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip() grid.arrange(A, B, ncol=1)

在ggplot2中显示堆积条形图上的数据值

我想在ggplot2的堆积条形图上显示数据值。 这是我的企图代码 Year <- c(rep(c("2006-07", "2007-08", "2008-09", "2009-10"), each = 4)) Category <- c(rep(c("A", "B", "C", "D"), times = 4)) Frequency <- c(168, 259, 226, 340, 216, 431, 319, 368, 423, 645, 234, 685, 166, 467, 274, 251) Data <- data.frame(Year, Category, Frequency) library(ggplot2) p <- qplot(Year, Frequency, data = Data, geom = "bar", fill […]

R中的赋值运算符:“=”和“< – ”

R中赋值运算符'='和'< – '有什么不同? 我知道,这个例子所显示的运营商略有不同 x <- y <- 5 x = y = 5 x = y <- 5 x <- y = 5 # Error in (x <- y) = 5 : could not find function "<-<-" 但这是唯一的区别吗?

技巧来pipe理R会话中的可用内存

人们使用什么技巧来pipe理交互式R会话的可用内存? 我使用下面的函数[根据Petr Pikal和David Hinds在2004年的r-help列表中发布]来列出(和/或sorting)最大的对象,偶尔使用rm()一些。 但是到目前为止,最有效的解决scheme是在64位Linux下运行,内存充足。 任何其他好的技巧人们想分享? 请发邮件。 # improved list of objects .ls.objects <- function (pos = 1, pattern, order.by, decreasing=FALSE, head=FALSE, n=5) { napply <- function(names, fn) sapply(names, function(x) fn(get(x, pos = pos))) names <- ls(pos = pos, pattern = pattern) obj.class <- napply(names, function(x) as.character(class(x))[1]) obj.mode <- napply(names, mode) obj.type <- ifelse(is.na(obj.class), obj.mode, […]

用最新的非NA值replaceNA

在data.frame(或data.table)中,我想“填充”具有最近的非NA值的NA。 一个简单的例子,使用vector(而不是data.frame )如下: > y <- c(NA, 2, 2, NA, NA, 3, NA, 4, NA, NA) 我想要一个函数fill.NAs() ,它允许我构造yy ,使得: > yy [1] NA NA NA 2 2 2 2 3 3 3 4 4 我需要对许多(总计data.frame )小型数据data.frame ( data.frame )重复这个操作,其中一行是NA,它的所有条目都是。 什么是解决问题的好方法? 我制作的丑陋解决scheme使用这个function: last <- function (x){ x[length(x)] } fill.NAs <- function(isNA){ if (isNA[1] == 1) { […]