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

在某些情况下如何更改R数据帧中的列?

宦飞
2023-03-14
本文向大家介绍在某些情况下如何更改R数据帧中的列?,包括了在某些情况下如何更改R数据帧中的列?的使用技巧和注意事项,需要的朋友参考一下

有时,特定列的列值与另一列有某种关系,我们可能需要根据某些条件来更改该特定列的值。我们需要进行此更改,以检查列值的更改如何对所考虑的两个列之间的关系产生影响。在R中,我们可以使用单个方括号来更改列值。

示例

请看以下数据帧-

set.seed(1)
> x1<-rpois(20,5)
> x2<-rpois(20,2)
> x3<-runif(20,2,5)
> df<-data.frame(x1,x2,x3)
> df
x1 x2 x3
1 4 4 4.462839
2 4 1 3.941181
3 5 2 4.348798
4 8 0 3.659109
5 3 1 3.589159
6 8 1 4.368069
7 9 0 2.069994
8 6 1 3.431690
9 6 4 4.196941
10 2 1 4.078195
11 3 2 3.432859
12 3 2 4.583628
13 6 2 3.314291
14 4 1 2.734392
15 7 3 2.212037
16 5 2 2.298398
17 6 3 2.948815
18 11 0 3.555903
19 4 3 3.986015
20 7 2 3.220491

假设我们想从第2列(x2)值中减去2,如果第3列的值大于3,则可以如下所示进行操作-

> df$x2[df$x3 > 3] <- (df$x2[df$x3 > 3] - 2)
> df
x1 x2 x3
1 4 -2.375000 4.462839
2 4 -2.562500 3.941181
3 5 -2.400000 4.348798
4 8 -2.281250 3.659109
5 3 -2.777778 3.589159
6 8 -2.265625 4.368069
7 9 0.000000 2.069994
8 6 -2.234568 3.431690
9 6 -2.277778 4.196941
10 2 -2.361111 4.078195
11 3 -3.000000 3.432859
12 3 -2.666667 4.583628
13 6 -2.666667 3.314291
14 4 1.000000 2.734392
15 7 3.000000 2.212037
16 5 2.000000 2.298398
17 6 3.000000 2.948815
18 11 -2.388889 3.555903
19 4 -2.437500 3.986015
20 7 -2.285714 3.220491

如果我们想将x3小于3的值的第1列(x1)值乘以2,则可以如下所示进行操作-

> df$x1[df$x3 < 3] <- (df$x1[df$x3 < 3]*2)
> df
x1 x2 x3
1 4 -1.0937500 4.462839
2 4 -1.1406250 3.941181
3 5 -0.8800000 4.348798
4 8 -0.5351562 3.659109
5 3 -1.5925926 3.589159
6 8 -0.5332031 4.368069
7 18 0.0000000 2.069994
8 6 -0.4705075 3.431690
9 6 -0.7129630 4.196941
10 2 -0.7268519 4.078195
11 3 -2.5000000 3.432859
12 3 -1.5555556 4.583628
13 6 -1.5555556 3.314291
14 8 1.0000000 2.734392
15 14 3.0000000 2.212037
16 10 2.0000000 2.298398
17 12 3.0000000 2.948815
18 11 -0.7314815 3.555903
19 4 -1.1093750 3.986015
20 7 -0.6122449 3.220491
 类似资料:
  • 问题内容: 鉴于以下课程 当我们验证它(例如,使用@Valid)并且如果Website.url不遵守我的自定义@ValidUrl约束时,我们将遇到约束冲突(例如,“ URL不可访问”)。 我想知道如果用户愿意,是否可以忽略该验证。 脚步: 第一次验证表格 引发约束冲突并将其显示给用户 用户选择“我知道,仍然添加”,然后重新提交 第二次验证表单,验证@ValidUrl以外的所有内容 问题答案: 您可

  • 我安装了一个HBase,其中有一组现有表,其中有一组数据(我不想删除)。最近,我偶然发现使用Apache Phoenix可以使用类似SQL的语法查询HBase数据,到目前为止,这非常棒。然而,由于我仍然不完全熟悉各种数据类型以及它们如何映射到我存储在HBase中的Java类型,有时我会弄错。如果我有一个存储为的HBase列 我不小心将我的Phoenix列创建为varchar,我现在如何在不丢失所有

  • 我有一堆CSV文件,它们是作为数据流读取的。对于每个dataframe,我希望更改一些列名,如果某个dataframe中存在特定列: column_name_update_map={'aa':'xx';'bb':'yy'}

  • 有一个对象,其中用户以数组的形式存在,如何使用特定id更新用户,而不发送整个用户数组。 当同时更新不同用户的数据时,发送的数据被覆盖,但必须不被覆盖

  • 我有两个数据帧DF1和DF2。 DF1: DF2: 我需要来自DF2的行数,其中EmploymentType='Employee',EmpStatus='Active',EmpStartDate 输出: 如何在不合并两个数据帧的情况下实现这一点? 我不能合并数据帧,因为没有公共键,而且因为我需要基于条件的行数,我不能在任何临时列上加入数据帧,因为我需要避免交叉连接。

  • 问题内容: 我想更改数据库表的列位置而不丢失数据。 例如: 当前表: 到 问题答案: 试试这个: