小编fr3*_*d-5的帖子

返回第一行组

我有一个由a组成的数据帧ID,对于组中的每个元素都是相同的,两个日期时间和这两者之间的时间间隔.其中一个日期时间对象是我的相关时间标记.现在我想获得数据帧的子集,其中包含每个组的最早条目.条目(尤其是时间间隔)需要保持不变.

我的第一种方法是根据1. ID和2.相关日期时间对帧进行排序.但是,我无法返回每个新组的第一个条目.

然后我一直在查看函数aggregate()以及ddply()函数但是我找不到两个选项,只返回第一个条目而不将聚合函数应用于时间间隔值.

是否有(简单)方法来实现这一目标?

附加:也许我不清楚添加我的aggregate()和ddply()注释.我不一定需要聚合.鉴于数据框的排序方式是每个新组的第一行是我要查找的行,只需返回一个子集,其中每一行的ID都与之前的ID不同(即每个新组的起始行).

示例数据:

structure(list(ID = c(1454L, 1322L, 1454L, 1454L, 1855L, 1669L, 
1727L, 1727L, 1488L), Line = structure(c(2L, 1L, 3L, 1L, 1L, 
1L, 1L, 1L, 1L), .Label = c("A", "B", "C"), class = "factor"), 
    Start = structure(c(1357038060, 1357221074, 1357369644, 1357834170, 
    1357913412, 1358151763, 1358691675, 1358789411, 1359538400
    ), class = c("POSIXct", "POSIXt"), tzone = ""), End = structure(c(1357110430, 
    1357365312, 1357564413, 1358230679, 1357978810, 1358674600, 
    1358853933, 1359531923, 1359568151), class = c("POSIXct", 
    "POSIXt"), tzone = ""), …
Run Code Online (Sandbox Code Playgroud)

aggregate r plyr

9
推荐指数
2
解决办法
3万
查看次数

如何将多列转换为观察

我有一个这样的数据框:

structure(list(one = structure(1:4, .Label = c("a", "b", "c", 
"d"), class = "factor"), two = c(2, 4, 7, 3), x.1 = c("x1a", 
"x1b", "x1c", "x1d"), x.2 = c("x2a", "x2b", "x2c", "x2d"), x.3 = c("x3a", 
"x3b", "x3c", "x3d"), y.1 = c(NA, "y1b", "y1c", NA), y.2 = c(NA, 
"y2b", "y2c", NA), y.3 = c(NA, "y3b", "y3c", NA)), .Names = c("one", 
"two", "x.1", "x.2", "x.3", "y.1", "y.2", "y.3"), row.names = c(NA, 
-4L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

如您所见,每个事件a,b,c和d(变量"one")的观察结果存储为列,其中x和y定义单独的观察值,1,2和3定义变量.变量"two"在这里没有意义.

我喜欢重塑这个数据框,让它整洁,每个观察都有自己的行,每个变量都有自己的列.

最终数据框应如下所示:

structure(list(one = structure(c(1L, 2L, 2L, …
Run Code Online (Sandbox Code Playgroud)

r reshape dataframe reshape2 tidyr

4
推荐指数
1
解决办法
149
查看次数

未正确计算两个POSIXct对象的时差

我有两个POSIXct类的datetime对象,如下所示:

> x = as.POSIXct('2013-03-31 01:39:42')
> y = as.POSIXct('2013-03-31 03:11:24')
Run Code Online (Sandbox Code Playgroud)

两个日期时间的时间差计算为31.7分钟(或1902秒).

> y - x
Time difference of 31.7 mins
Run Code Online (Sandbox Code Playgroud)

但是,这种情况下的时差为91.7分钟(或5502秒).有人可以向我解释这个错误吗?

debugging datetime r

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

如何将多个数据框导出到 CSV?

情况:我有几个数据框,我喜欢将它们作为 CSV 文件导出到工作目录中以进行进一步处理。

目标:使用单个函数(批量导出)将工作区中的数据框集合作为 csv 文件导出到工作目录。

详情

我的问题不是关于更改数据帧的内容,因此您可以使用 R 提供的任何示例数据进行复制

我用于导出单个数据框的功能是

csvExport <- function(data, enc = 'utf8'){
    name <- paste(deparse(substitute(data)), "csv", sep=".")
    con <- file(name, encoding = enc)
    write.csv(data, file = con, row.names=FALSE, quote = TRUE, sep = ";")
    text<-"exported!"
    print(paste(name, text, sep=" "))
}
Run Code Online (Sandbox Code Playgroud)

由于我不喜欢为每个数据框调用函数来显式导出,因此我正在寻找一种方法来导出数据框,方法是指出我喜欢导出的工作区中的哪些数据框:

export <- ls()[1:20]
Run Code Online (Sandbox Code Playgroud)

然后我尝试在上面的列表中使用这个函数(有一些 for 循环的变体):

multipleCSVExport <- function(export){
  for (i in export){
    csvExport(i)
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法创建预期的结果。

csv export r

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

标签 统计

r ×4

aggregate ×1

csv ×1

dataframe ×1

datetime ×1

debugging ×1

export ×1

plyr ×1

reshape ×1

reshape2 ×1

tidyr ×1