当前位置: 首页 > 知识库问答 >
问题:

使用dplyr在选定列上添加具有行均值的列

别子实
2023-03-14

我有一个数据帧,其中包含在不同时间点测量的几个变量(例如,< code>test1_tp1,< code>test1_tp2,< code>test1_tp3,< code>test2_tp1,< code>test2_tp2,...).

我现在尝试使用dplyr将新列添加到数据帧中,该数据帧计算这些列的选择上的行平均值(例如,test1)的所有时间点上的平均值)。

    < li >我甚至对计算显式命名的列的平均值的语法感到困惑。我没有成功的尝试是:

<代码>数据%

<代码>数据%

共有3个答案

蒯慈
2023-03-14

不是 dplyr 解决方案,但您可以尝试:

cols_2sum <- grepl('test1',colnames(data))
rowMeans(data[,cols_2sum])
谈炳
2023-03-14

以下是如何在dplyr中执行此操作 - 我使用虹膜数据作为示例

iris %>% mutate(sum.Sepal = rowSums(.[grep("^Sepal", names(.))]))

这将计算以“Sepal”开头的所有列的行和。您可以以相同的方式使用<code>rowMeans

毋炳
2023-03-14

您可以在<code>选择

data %>%
  mutate(test1 = select(., starts_with("test1_")) %>%
           rowMeans(na.rm = TRUE))
 类似资料:
  • 我有一个结构如下的dataframe(摘要示例,不是实际的) 我希望使用dplyr、group_by(MedID)和mutate在新的数据帧中添加一列(我们在df2中将其称为Flag2),这样在每个病人(MedID)中,对于唯一MedID中的每个后续行,df2$Flag2列==1,但仅在df1$Flag2列==99之后,否则df2$Flag2列得到0。如果MedID的第一行中df1$flag==9

  • 我想使用dplyr::mutate计算一些列的平均值。 我想包含来计算平均值的列只有BL1到BL9,所以我这样做了。 这行不通。我注意到如果我一个接一个的列,它会工作 我怀疑这是因为我给出的是字符串而不是“列”。 有人能解释这种行为吗?对此最好的解决办法是什么?

  • 初始数据流: 产生的数据frame: 我通常通过使用以下内容将新列“追加”到dataframe:

  • 问题内容: 我正在尝试使用选定的初始质心进行k均值聚类。它说在这里 指定您的初始中心: 如果通过,它应该是形状(的,)并给出初始中心。 我在Python中的代码: 返回错误: 并返回相同的初始中心。任何想法如何形成初始中心以便可以被接受吗? 问题答案: 的默认行为是使用不同的随机质心多次初始化算法(即Forgy方法)。然后,随机初始化的数量由参数(docs)控制: n_init :int,默认值:

  • 问题内容: 我有一个现有的数据框,我需要添加一个额外的列,每行将包含相同的值。 现有的df: 新的df: 我知道如何追加现有的series / dataframe列。但这是另一种情况,因为我所需要的只是添加“名称”列,并将每一行设置为相同的值,在本例中为“ abc”。 问题答案: 将添加新列并将所有行设置为该值:

  • 我有100行10列的数据(实际数据非常大)。我还有一个row_索引列表,它包含哪些行被认为是平均值。我想计算第2、5、6、7和8列的平均值。我们可以用dataframe对象的函数来实现吗? 我知道的是做一个for循环,为row_index中的每个元素获取行的值,并保持平均值。我们有一些直接的函数,我们可以传递row_list,column_list和轴,用于ex? 我已经看到了DataFrame。