在R中的子集上跨行应用函数

时间:2016-04-11 17:11:16

标签: r data.table grouping subset

提前道歉,因为我确定之前已经问过这个问题,但我正在寻找一种有效的方法来优先使用数据表包。

我有一个矩阵,如果可以使用包完成数据表,我需要按列分组数据,但是对每组列应用private ICommand _gotFocusCommand; public ICommand GotFocusCommand { get { if (_gotFocusCommand == null) { _gotFocusCommand = new DelegateCommand<string>(TextBoxGotFocus); } return _gotFocusCommand; } } private void TextBoxGotFocus(string infoText) { CardInfoText = infoText; } 函数。最终结果应该是一个矩阵(或数据表),其中包含具有基于组平均值的列。

<TextBlock Grid.Row="2"
           Grid.Column="0"
           Grid.ColumnSpan="2"
           HorizontalAlignment="Center"
           Text="{Binding CardInfoText}" />

我知道价值观都是一样的但对此并不重要。所以现在我需要找到各行的平均值,但是每列对应的平均值。因此,最终结果应该是一个包含5列和15行的数据表,其中V1,V2和V3,V4等之间的所有行的平均值。列1将具有15个值,即所有行之间的平均值。前两列等等。该方法将被整合到一个循环中,以自动化超过100个数据集,这就是效率很重要的方法。

1 个答案:

答案 0 :(得分:1)

我们可以按组拆分数据,找到每个数据的行方式。

#Split using integer division and a generic level generator
grps <- split(1:ncol(df), gl(ncol(df) %/% 7, 7))

#Find mean of each grouped row
sapply(grps, function(ind) rowMeans(df[,ind]))
#              1         2         3         4         5
# [1,]  45.71143  45.71143  45.71143  45.71143  45.71143
# [2,]  45.82786  45.82786  45.82786  45.82786  45.82786
# [3,]  36.08286  36.08286  36.08286  36.08286  36.08286
# [4,]  60.16214  60.16214  60.16214  60.16214  60.16214
# [5,]  83.61571  83.61571  83.61571  83.61571  83.61571
# [6,]  54.36286  54.36286  54.36286  54.36286  54.36286
# [7,]  92.84571  92.84571  92.84571  92.84571  92.84571