我有关于管辖权重叠的能源公司的数据。我希望能够计算这些公司重叠的地方的平均销售额。这些公司将始终重叠 - 那么我如何使用这些信息来计算这些公司的平均值?大约有20对公司。
module.exports = function(grunt) {
grunt.initConfig({
...
})
grunt.registerTask('sample-task', function() {
var test = grunt.file.readJSON('./test.json');
if (test.fruit === 'apple') {
// do this one thing
} else {
// do something else
}
});
grunt.registerTask('default', ['sample-task']);
};
答案 0 :(得分:1)
我们使用' grep'获得'公司'的索引具有多个条目的元素,即由' /'分隔。然后,通过分隔符(输出将是list
)拆分这些元素,使用list
循环遍历sapply
,使用'公司&#循环match
元素39;列获取位置,用它来获得相应的'销售'元素。作为'销售'列为factor
,我们需要将其转换为numeric
才能获得mean
。当我们将factor
转换为numeric
类时,所有非数字元素(?
)都将转换为NA
。将这些NA
元素替换为mean
值。
i1 <- grepl('/', data$Company)
v1 <- sapply(strsplit(as.character(data$Company[i1]), '/'),
function(x) mean(as.numeric(as.character(data$Sales[match(x,
data$Company)]))))
data$Sales <- as.numeric(as.character(data$Sales))
data$Sales[is.na(data$Sales)] <- v1
data
# Company Sales
#1 Energy USA 100
#2 Good Energy 2500
#3 Hydropower 4 U 550
#4 Coal Town 6000
#5 Energy USA/Good Energy 1300
#6 Good Energy/Coal Town 4250
答案 1 :(得分:0)
在不知道您的原始数据如何的情况下,很难给出有效的答案。但是,假设您的数据的公司和销售列包含每个公司的多行,您可以执行以下操作:
mean(data$Sales[data$Company %in% c('Energy USA', 'Good Energy')]])
mean(data$Sales[data$Company %in% c('Good Energy', 'Coal Town')]])
答案 2 :(得分:0)
如果你的数据集相当小,你可以在“数据”中创建一个新的“管辖区”列。
MeansByJurisdiction <- tapply(data$sales, data$jurisdiction, mean)
然后你可以将矢量转换为dataframe
MeansByJurisdiction <- data.frame(MeansByJurisdiction)
MeansByJurisdiction
数据框中的rownames将填充管辖区,您可以使用一行简单的代码提取它们:
MeansByJurisdiction$jurisdictions <- row.names(MeansByJurisdiction)