小编bro*_*oli的帖子

在一次调用中按组对多个变量应用多个汇总函数

我有以下数据框架

x <- read.table(text = "  id1 id2 val1 val2
1   a   x    1    9
2   a   x    2    4
3   a   y    3    5
4   a   y    4    9
5   b   x    1    7
6   b   y    4    4
7   b   x    3    9
8   b   y    2    8", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

我想计算按id1和id2分组的val1和val2的平均值,并同时计算每个id1-id2组合的行数.我可以单独执行每个计算:

# calculate mean
aggregate(. ~ id1 + id2, data = x, FUN = mean)

# count rows
aggregate(. ~ id1 + id2, data = x, FUN …
Run Code Online (Sandbox Code Playgroud)

aggregate r

85
推荐指数
5
解决办法
9万
查看次数

有条不紊地使用facet_grid更改面板背景?

我正在使用ggplot2中的"提示"数据集.如果我做

sp = ggplot(tips,aes(x=total_bill, y = tip/total_bill)) + 
        geom_point(shape=1) + 
        facet_grid(sex ~ day)
Run Code Online (Sandbox Code Playgroud)

情节很好.但我现在想要改变"Fri"下的情节的面板背景.有没有办法做到这一点?

更好的是,我可以通过传递参数来有条件地改变颜色吗?例如,如果超过3个点低于0.1,那么将面板背景(仅适用于该面板)更改为某种颜色,而其他所有颜色保持默认浅灰色?

r ggplot2

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

R data.table将函数应用于使用列作为参数的行

我有以下内容 data.table

x = structure(list(f1 = 1:3, f2 = 3:5), .Names = c("f1", "f2"), row.names = c(NA, -3L), class = c("data.table", "data.frame"))
Run Code Online (Sandbox Code Playgroud)

我想将一个函数应用于每一行data.table.该函数func.test使用args f1并对其f2执行某些操作并返回计算值.假设(作为例子)

func.text <- function(arg1,arg2){ return(arg1 + exp(arg2))}
Run Code Online (Sandbox Code Playgroud)

但我的真实函数更复杂,并且循环和所有,但返回计算值.实现这一目标的最佳方法是什么?

r mapply data.table

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

R lubridate将秒数转换为日期

关于R的润滑剂包,我有一个简单的问题.自纪元以来,我在几秒钟内就有了一系列时间戳.我想将其转换为YYYY-MM-DD-HH格式.在基础R中,我可以做这样的事情,首先将其转换为日期格式

> x = as.POSIXct(1356129107,origin = "1970-01-01",tz = "GMT")
> x
[1] "2012-12-21 22:31:47 GMT"
Run Code Online (Sandbox Code Playgroud)

请注意,上面只是将其转换为日期格式,而不是YYYY-MM-DD-HH格式.我怎么在lubridate这样做?我怎么用基础R呢?

非常感谢提前

r lubridate

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

熊猫填补组内缺少的日期和值

我的数据框如下所示

x = pd.DataFrame({'user': ['a','a','b','b'], 'dt': ['2016-01-01','2016-01-02', '2016-01-05','2016-01-06'], 'val': [1,33,2,1]})
Run Code Online (Sandbox Code Playgroud)

我希望能够做的就是找到日期列内的最小和最大的日期,并扩大该列有所有的日期出现,同时填补0val列.所以期望的输出是

            dt user  val
0   2016-01-01    a    1
1   2016-01-02    a   33
2   2016-01-03    a    0
3   2016-01-04    a    0
4   2016-01-05    a    0
5   2016-01-06    a    0
6   2016-01-01    b    0
7   2016-01-02    b    0
8   2016-01-03    b    0
9   2016-01-04    b    0
10  2016-01-05    b    2
11  2016-01-06    b    1
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这里这里提到的解决方案,但它们不是我追求的.任何指针都非常赞赏.

python dataframe pandas

18
推荐指数
2
解决办法
8965
查看次数

Linux date命令,查找下一小时的秒数

如何使用日期查找下一小时的秒数?我知道我能做到

date -d "next hour"
Run Code Online (Sandbox Code Playgroud)

但这只是增加1小时到现在.我想让它显示下一个整整一小时的秒数.例如,如果当前时间是9:39am我想要找到的秒数10am

linux bash date

10
推荐指数
2
解决办法
5499
查看次数

R中的重叠矩阵

我有以下数据框

id channel
1  a
1  b
1  c
2  a
2  c
3  a
Run Code Online (Sandbox Code Playgroud)

我想创建和重叠矩阵.它基本上是一个方形矩阵,行和列标签为a,b,c,该表中的每个条目显示每个通道共有多少个id.例如,在上面的例子中,矩阵看起来像

  a b c
a 3 1 2
b 1 1 1
c 2 1 2
Run Code Online (Sandbox Code Playgroud)

非常感谢提前.

r

8
推荐指数
2
解决办法
1949
查看次数

R data.table条件聚合

我面临着(我认为)这是一个棘手的问题,关于data.table 我的以下内容 data.table

structure(list(id1 = c("a", "a", "a", "b", "b", "c", "c"), id2 = c("x", 
"y", "z", "x", "u", "y", "z"), val = c(2, 1, 2, 1, 3, 4, 3)), .Names = c("id1", 
"id2", "val"), row.names = c(NA, -7L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x1f66a78>)
Run Code Online (Sandbox Code Playgroud)

我想val基于第二列在列的数据上创建条件聚合id2.完成聚合的方式是仅包括id1具有来自给定id2元素的至少一个元素的组.我将通过一个例子来说明我的意思.

x(第一行第二列)的条件聚合将包括val值2,1,2 for id1 = avalvalues = 1,3 from id1 = b 因为id2=x它们存在但没有值来自id1=c,导致值为2 + …

r data.table

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

获取数据框中的前一个n行?

我有以下数据框架.

date id value
2012-01-01 1 0.3
2012-01-01 2 0.5
2012-01-01 3 0.2
2012-01-01 4 0.8
2012-01-01 5 0.2
2012-01-01 6 0.8
2012-01-01 7 0.1
2012-01-01 8 0.4
2012-01-01 9 0.3
2012-01-01 10 0.2
Run Code Online (Sandbox Code Playgroud)

有几个日期,每个日期,我有10个id值,如上所示和值字段.我想做的是每个id在"value"字段中找到前面的n个值.例如,如果n = 3,那么我希望输出如下.

date id value value1 value2 value3
2012-01-01 1 0.3 NA NA NA
2012-01-01 2 0.5 NA NA NA
2012-01-01 3 0.2 NA NA NA
2012-01-01 4 0.8 0.2 0.5 0.3
2012-01-01 5 0.2 0.8 0.2 0.5
...
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以通过plyr或使用mapply来达到这个目的?非常感谢提前.

r plyr

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

R .C接口:传递多维数组

我已经写了C中的函数"富",我想从R程序中调用.该函数接受矩阵作为输入并对其执行一些操作(例如,为每个元素添加1).虽然单个矢量很容易

.C("foo", n=as.integer(5), x=as.double(rnorm(5)))
Run Code Online (Sandbox Code Playgroud)

用foo实现的

void foo(int *nin, double *x)
{
int n = nin[0];

int i;

for (i=0; i<n; i++)
    x[i] = x[i] * x[i];
} 
Run Code Online (Sandbox Code Playgroud)

如何传入二维数组?如果我改变了"双*X"到"双**X"它给出了一个分段错误.任何指针赞赏.

arrays r interface multidimensional-array

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