我有以下数据框架
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) 我正在使用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,那么将面板背景(仅适用于该面板)更改为某种颜色,而其他所有颜色保持默认浅灰色?
我有以下内容 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的润滑剂包,我有一个简单的问题.自纪元以来,我在几秒钟内就有了一系列时间戳.我想将其转换为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呢?
非常感谢提前
我的数据框如下所示
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)
我希望能够做的就是找到日期列内的最小和最大的日期,并扩大该列有所有的日期出现,同时填补0了val列.所以期望的输出是
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)
如何使用日期查找下一小时的秒数?我知道我能做到
date -d "next hour"
Run Code Online (Sandbox Code Playgroud)
但这只是增加1小时到现在.我想让它显示下一个整整一小时的秒数.例如,如果当前时间是9:39am我想要找到的秒数10am
我有以下数据框
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)
非常感谢提前.
我面临着(我认为)这是一个棘手的问题,关于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 = a和valvalues = 1,3 from id1 = b 因为id2=x它们存在但没有值来自id1=c,导致值为2 + …
我有以下数据框架.
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来达到这个目的?非常感谢提前.
我已经写了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"它给出了一个分段错误.任何指针赞赏.