我是R的新手,我有一个包含以下字段的数据框:
day place hour time_spent count
1 1 1 1 120
1 1 1 2 100
1 1 1 3 90
1 1 1 4 80
所以我的目标是计算每个地方花费的时间,其中75%的车辆穿过这个地方。所以从这个数据框架我生成以下数据框
day place hour time_spent count cum_count percentage
1 1 1 1 120 120 30.7%
1 1 1 2 100 220 56.4%
1 1 1 3 90 310 79%
1 1 1 4 80 390 100%
df$cum_count=cumsum(df$count)
df$percentage=cumsum(df$percentage)
for(i in 1:length(df$percentage)){
if(df$percentage[i]>75%){
low time=df$time_spent[i-1]
high_time=df$time_spent[i]
}
}
所以这意味着75%的车辆在这个地方花费了2-3分钟。但是现在我有一个这样的数据框架,适用于所有地方和所有日子。
day place hour time_spent count
1 1 1 1 120
1 1 1 2 100
1 1 1 3 90
1 1 1 4 80
1 2 1 1 220
1 2 1 2 100
1 2 1 3 90
1 2 1 4 80
1 3 1 1 100
1 3 1 2 80
1 3 1 3 90
1 3 1 4 100
2 1 1 1 120
2 1 1 2 100
2 1 1 3 90
2 1 1 4 80
2 2 1 1 220
2 2 1 2 100
2 2 1 3 90
2 2 1 4 80
2 3 1 1 100
2 3 1 2 80
2 3 1 3 90
2 3 1 4 100
如何计算每个地方的高时间和低时间?感谢任何帮助。
答案 0 :(得分:1)
max
和min
函数应该在这里诀窍。虽然您也可以summary
一次性获得中位数,平均值等。我还建议quantile
这些百分比的功能。通常情况下R是一个棘手的部分,如果以正确的格式获取数据。
假设您想要在每个地方花费的总时间:
index <- sort(unique(df$place))
times <- as.list(rep(NA, length(index)))
names(times) <- index
for(ii in index){
counter <- c()
for(jj in df[df$place==ii,]$time_spent){
counter <- c(counter, rep(jj, df[df$place==ii,]$count[jj]))
}
times[[ii]] <- counter
}
现在,对于每个地方,您可以使用以下方式计算最大值和最小值:
lapply(times, max)
lapply(times, min)
同样,您可以计算均值:
lapply(times, function(x) sum(x)/length(x))
lapply(times, mean)
我认为你想要的是分位数:
lapply(times, quantile, 0.75)
这是至少75%的车辆通过一个地方的时间,即75%的车辆花了这个或更少的时间通过。
答案 1 :(得分:0)
我们可以按操作使用组
char binarycode[5][5];
string tmp;
cout<<"Please type first 5 binary numbers: ";
cin>>tmp;
char tmp2[5];
strcpy(tmp2, tmp.c_str());
binarycode[0] = tmp2;
答案 2 :(得分:0)
如果我正确理解你的问题(你想在一个地方找到time_spent的最小值和最大值):
df %>%
group_by(place) %>%
summarise(min(time_spent),
max(time_spent))
会给你这个:
place min(time-spent) max(time_spent)
1 1 4
2 1 4
3 1 4