当前位置: 首页 > 编程笔记 >

如何在R数据帧中创建具有行总和子集的新列?

燕英逸
2023-03-14
本文向大家介绍如何在R数据帧中创建具有行总和子集的新列?,包括了如何在R数据帧中创建具有行总和子集的新列?的使用技巧和注意事项,需要的朋友参考一下

在数据分析中,我们必须处理许多情况,其中之一是创建一个新列,该列的行总和只有几行。将重复这些总和,以便获得等于数据帧中的行数的值总数。我们可以将rowSums与rep函数一起使用来创建这种类型的列。

示例

请看以下数据帧-

> set.seed(99)
> x1<-rnorm(20,0.5)
> x2<-rpois(20,2)
> x3<-runif(20,2,10)
> x4<-rnorm(20,0.2)
> x5<-rpois(20,5)
> df<-data.frame(x1,x2,x3,x4,x5)
> df
x1 x2 x3 x4 x5
1 0.7139625 4 9.321058 0.33297863 4
2 0.9796581 2 4.298837 -1.47926432 11
3 0.5878287 3 7.389898 -0.07847958 5
4 0.9438585 4 7.873764 -1.35241100 6
5 0.1371621 2 5.534758 -1.17969925 4
6 0.6226740 4 8.786676 -1.15705659 5
7 -0.3638452 1 6.407712 -0.72113718 5
8 0.9896243 2 9.374095 -0.66681774 9
9 0.1358831 2 2.086996 1.85664439 3
10 -0.7942420 0 8.730721 0.04492028 3
11 -0.2457690 3 2.687042 -1.37655243 2
12 1.4215504 3 7.075115 0.82408260 4
13 1.2500544 3 5.373809 0.53022068 5
14 -2.0085540 5 5.287499 -0.19812226 12
15 -2.5409341 1 6.217131 -0.88139693 5
16 0.5002658 3 2.723290 0.12307794 6
17 0.1059810 0 6.288451 -0.32553662 4
18 -1.2450277 2 2.942365 0.59128965 5
19 0.9986315 4 7.012492 -0.48045326 6
20 0.7709538 1 7.801093 -0.54869693 5

假设我们要创建一个新列,该列的前五行的总和重复到行总数。它可以做到如下-

> df$x6<-rep(c(rowSums(df[1:5,])),times=4)
> df
x1 x2 x3 x4 x5 x6
1 0.7139625 4 9.321058 0.33297863 4 18.36800
2 0.9796581 2 4.298837 -1.47926432 11 16.79923
3 0.5878287 3 7.389898 -0.07847958 5 15.89925
4 0.9438585 4 7.873764 -1.35241100 6 17.46521
5 0.1371621 2 5.534758 -1.17969925 4 10.49222
6 0.6226740 4 8.786676 -1.15705659 5 18.36800
7 -0.3638452 1 6.407712 -0.72113718 5 16.79923
8 0.9896243 2 9.374095 -0.66681774 9 15.89925
9 0.1358831 2 2.086996 1.85664439 3 17.46521
10 -0.7942420 0 8.730721 0.04492028 3 10.49222
11 -0.2457690 3 2.687042 -1.37655243 2 18.36800
12 1.4215504 3 7.075115 0.82408260 4 16.79923
13 1.2500544 3 5.373809 0.53022068 5 15.89925
14 -2.0085540 5 5.287499 -0.19812226 12 17.46521
15 -2.5409341 1 6.217131 -0.88139693 5 10.49222
16 0.5002658 3 2.723290 0.12307794 6 18.36800
17 0.1059810 0 6.288451 -0.32553662 4 16.79923
18 -1.2450277 2 2.942365 0.59128965 5 15.89925
19 0.9986315 4 7.012492 -0.48045326 6 17.46521
20 0.7709538 1 7.801093 -0.54869693 5 10.49222

只需查看x6列,您就会看到第五行之后的值是重复的。我们可以对列总和而不是行总和执行相同的操作。

 类似资料:
  • 本文向大家介绍R子集数据框中的行和列,包括了R子集数据框中的行和列的使用技巧和注意事项,需要的朋友参考一下 示例 语法访问的行和列:[,[[,和$ 本主题涵盖访问数据帧的特定行和列的最常用语法。这些是 就像matrix带单括号的data[rows, columns] 使用行号和列号 使用列(和行)名称 像list: 用单括号data[columns]获取数据框 用双括号data[[one_colu

  • 本文向大家介绍如何使用grepl函数对R数据帧的行进行子集化?,包括了如何使用grepl函数对R数据帧的行进行子集化?的使用技巧和注意事项,需要的朋友参考一下 R中的grepl函数在R数据帧的字符向量或列的每个元素内搜索与参数模式的匹配项。如果我们想使用grepl对R数据帧的行进行子集化,则可以通过访问包含字符值的列来使用带有单方括号和grepl的子集。 例1 请看以下数据帧: 输出结果 通过在x

  • 本文向大家介绍如何确定R数据帧列中具有最小值和最大值的行?,包括了如何确定R数据帧列中具有最小值和最大值的行?的使用技巧和注意事项,需要的朋友参考一下 在数据分析中,我们经常需要确定最小值和最大值,因为这些值有助于我们理解所考虑的列或变量的限制。可以通过在单个方括号中使用which.max表示最大值,并使用which.min表示最小值来提取行。 示例 请看以下数据帧- 输出结果 确定具有特定列的最

  • 在R中,我有以下两个数据帧(Df1和Df2)——它们是我刚刚制作的例子——我打算根据以下规则创建一个虚拟变量:对于Df1中的每个id,如果这个观察id的年份更高或等于Df2中年份的观测id,则虚拟值为1,否则为0。数据帧Df3是我希望实现的结果。我怎么能做到呢?Df1 Df2 Df3 一些背景: 我尝试为我正在处理的真实数据帧创建两个循环。下面是我尝试过的代码。数据帧称为data_school,我

  • 问题内容: 我有一个如下所示的pandas数据框,并通过一列保存数据组: 现在,我想创建新的数据框(名为df_w,df_x,df_y,df_z),这些数据框仅保存其原始数据中的数据,并在一些可迭代的列表(例如列表)中进行最佳组合: 有没有使用groupby,apply和/或applymap和函数来实现此目的的智能(矢量化熊猫)方法? 我当时正在考虑对数据框进行迭代,但这似乎不是很优雅。 预先感谢您

  • 因为xv中的值可能会改变,xv中的条目数也可能改变,所以我需要能够使用函数来做到这一点? 你知道我怎么做吗?