Tag: r faq

如何拆分数据框?

我想将一个dataframe分成几个较小的数据。 这看起来像一个非常微不足道的问题,但我无法从networkingsearchfind解决scheme。

根据一个因素的级别将data.frame分解成新的data.frames

我试图根据一个因素的水平创build单独的data.frame对象。 所以如果我有: df <- data.frame( x=rnorm(25), y=rnorm(25), g=rep(factor(LETTERS[1:5]), 5) ) 我怎样才能将df拆分为包含相应的x和y值的每个g级别的单独data.frame s? 我可以使用split(df, df$g)获得大部分的方法,但是我希望每个级别的因子都有自己的data.frame 。 什么是最好的方法来做到这一点? 谢谢。

将图例添加到ggplot2线图

我有一个关于ggplot2的传说的问题。 我设法在同一个图中绘制三条线,并且想要使用三种颜色添加图例。 这是使用的代码 library(ggplot2) require(RCurl) link<-getURL("https://dl.dropbox.com/s/ds5zp9jonznpuwb/dat.txt") datos<- read.csv(textConnection(link),header=TRUE,sep=";") datos$fecha <- as.POSIXct(datos[,1], format="%d/%m/%Y") temp = ggplot(data=datos,aes(x=fecha, y=TempMax,colour="1")) + geom_line(colour="red") + opts(title="TITULO") + ylab("Temperatura (C)") + xlab(" ") + scale_y_continuous(limits = c(-10,40)) + geom_line(aes(x=fecha, y=TempMedia,colour="2"),colour="green") + geom_line(aes(x=fecha, y=TempMin,colour="2"),colour="blue") + scale_colour_manual(values=c("red","green","blue")) temp 和输出 我想用三种颜色和variables名称(TempMax,TempMedia和TempMin)添加一个图例。 我努力了 scale_colour_manual 但是找不到确切的方法。 不幸的是原始数据从链接网站删除,无法恢复。 但他们来自这种格式的气象数据文件 "date","Tmax","Tmin","Tmed","Precip.diaria","Wmax","Wmed" 2000-07-31 00:00:00,-1.7,-1.7,-1.7,-99.9,20.4,20.4 2000-08-01 00:00:00,22.9,19,21.11,-99.9,6.3,2.83 2000-08-03 00:00:00,24.8,12.3,19.23,-99.9,6.8,3.87 2000-08-04 00:00:00,20.3,9.4,14.4,-99.9,8.3,5.29 […]

评估以stringforms给出的expression式

我很想知道R是否可以使用它的eval()函数来执行由string提供的计算。 这是一个常见的情况: eval("5+5") 但是,而不是10我得到: [1] "5+5" 任何解决scheme

生成一个虚拟variables

我无法在R中生成以下虚拟variables: 我正在分析年度时间序列数据(时间段1948-2009)。 我有两个问题: 我如何为观察#10产生一个虚拟variables,即1957年(1957年的值= 1,否则为零)? 如何在1957年之前生成一个零variables,并将1957年以后的值从1变为2009?

将data.frame列名传递给一个函数

我试图写一个函数来接受data.frame( x )和它的一column 。 该函数在x上执行一些计算,然后返回另一个data.frame。 我坚持最佳实践方法将列名传递给函数。 下面的两个最小例子fun1和fun2产生所需的结果,能够在x$column上执行操作,以max()为例。 但是,两人都依靠看似(至less对我来说)不雅 调用substitute()和可能eval() 需要将列名作为字符向量传递。 fun1 <- function(x, column){ do.call("max", list(substitute(x[a], list(a = column)))) } fun2 <- function(x, column){ max(eval((substitute(x[a], list(a = column))))) } df <- data.frame(B = rnorm(10)) fun1(df, "B") fun2(df, "B") 例如,我希望能够将该函数调用为fun(df, B) 。 其他选项,我已经考虑,但没有尝试过: 传递column作为列号的整数。 我认为这将避免substitute() 。 理想情况下,该function也可以接受。 with(x, get(column)) ,但是,即使它起作用,我认为这仍然需要substitute 利用formula()和match.call() ,我也没有太多的经验。 子问题 : do.call()是否优于eval() ?

计算平均每组(平均分组)

我有一个大的数据框架看起来类似于这样的: df <- data.frame(dive=factor(sample(c("dive1","dive2"),10,replace=TRUE)),speed=runif(10)) > df dive speed 1 dive1 0.80668490 2 dive1 0.53349584 3 dive2 0.07571784 4 dive2 0.39518628 5 dive1 0.84557955 6 dive1 0.69121443 7 dive1 0.38124950 8 dive2 0.22536126 9 dive1 0.04704750 10 dive2 0.93561651 我的目标是在另一列等于某个特定值时对一列的值求平均值,并对所有值重复此操作。 即在上面的例子中,我想返回列dive每个唯一值的列speed的平均值。 所以当dive==dive1时, dive==dive1的每个值的speed是这样的。

删除重复的行

我已经读取一个CSV文件到R data.frame。 某些行在其中一列中具有相同的元素。 我想删除该列中重复的行。 例如: platform_external_dbus 202 16 google 1 platform_external_dbus 202 16 space-ghost.verbum 1 platform_external_dbus 202 16 localhost 1 platform_external_dbus 202 16 users.sourceforge 8 platform_external_dbus 202 16 hughsie 1 我只想要其中的一行,因为其他行在第一列中有相同的数据。

ggplot的qplot不执行采购

假设我有两个源文件,第一个是example1.r ,第二个是example2.r (如下所示)。 example1.r plot(1:10,1:10) example2.r qplot(1:10,1:10) 当我来源example1.r时,绘制graphics。 但是,当我inputexample2.r时,它并不是。 这里有什么解决scheme? (在example2.r中的qplot是ggplot2的函数)

如何在R中编写trycatch

我想写的trycatch代码来处理从网上下载错误。 url <- c( "http://stat.ethz.ch/R-manual/R-devel/library/base/html/connections.html", "http://en.wikipedia.org/wiki/Xz") y <- mapply(readLines, con=url) 这两个语句运行成功。 下面我创build一个不存在的url: url <- c("xxxxx", "http://en.wikipedia.org/wiki/Xz") url[1]不存在。 如何写一个trycatch循环(函数),以便: 当url错误时,输出将是:“url错误,无法获取”。 当url错误时,代码不会停止,而是继续下载,直到url列表的末尾?