我已经开始逐渐从Excel转移到R,但我仍然在(相对简单的)计算方面遇到一些困难。
我想创建变量 x 的频率版本,让我们称之为" xfrequency" 。
请参阅下面的数据示例。
在一定时期(国家/年)期间,期望变量xfrequency应基本上计算x的数量。在样本数据中,观察期是从1990年到1995年。因此,1994年加拿大总共收到4 x。
也许有相关的功能呢?谢谢!
country year x xfrequency
CAN 1990 1 1
CAN 1991 0 0
CAN 1992 1 2
CAN 1993 0 0
CAN 1994 2 4
CAN 1995 1 5
USA 1990 0 0
USA 1991 2 2
USA 1992 1 3
USA 1993 0 0
USA 1994 1 4
USA 1995 0 0
GER 1990 NA NA
GER 1991 1 1
GER 1992 0 0
GER 1993 1 2
GER 1994 2 4
GER 1995 1 5
答案 0 :(得分:2)
data.table示例假设您的数据集位于名为index++;
的变量中:
function Player(name, money, bet, tmp, diceSum) {
this.name = name;
this.money = money;
this.bet = bet;
this.tmp = tmp;
this.diceSum = diceSum;
}
var players = [];
var name, money;
var numOfPlayers = 5;
$("#submit").click(
function() {
name = $("input[name='name']").val();
money = $("input[name='money']").val();
players.push(new Player(name, money, 0, 0, 0));
$("input[name='name']").val("");
$("input[name='money']").val("");
for( var i = 0; i< numOfPlayers; i++) {
(function(index){
$("#log").append(players[index].name + "<br>");
index++;
})(i);
}
}
);
给出了:
var pushNotification = PushNotification.init({
"android": {
"senderID": "1234567890"
},
"ios": {"alert": "true", "badge": "true", "sound": "true"},
"windows": {}
});
pushNotification.on('registration', function(data) {
console.log("registration event");
console.log(JSON.stringify(data));
});
pushNotification.on('notification', function(data) {
console.log("notification event");
console.log(JSON.stringify(data));
pushNotification.finish(function () {
console.log('finish successfully called');
});
});
pushNotification.on('error', function(e) {
console.log("push error");
});
这不完全是您的预期输出,但根据您提供的说明,xfreq列似乎是您正在寻找的。 p>
为了获得准确的输出,我们可以在x为0时将xfreq重置为0:
data
或者通过测试的一次通过:
library(data.table)
setDT(data)
data[is.na(x),x := 0] # Remove the NA as a sum of anything with NA is NA
data[, xfreq := cumsum(x), by=country]
答案 1 :(得分:2)
基础R替代方案:
extlib.dijit.BootstrapPickerList3
给出:
mydf <- transform(mydf, xfreq = ave(x, country, FUN = function(x) cumsum(!is.na(x))))
mydf[mydf$x==0 | is.na(mydf$x), "xfreq"] <- 0
答案 2 :(得分:0)
您可以使用库(dplyr)。
library(dplyr)
sum_data <- data %>% group_by(country) %>% summarise(xfrequency = sum(x, na.rm=T)).
我只是按国家/地区对您的数据进行分组,并为该国家/地区的所有期间添加了x的总和。