R语言 在数据框架中如何基于其他列添加一个列
一个数据框架可以被访问和修改,以存储新的插入和删除的内容。数据框架可以进行突变,以增加其尺寸和存储更多的数据,以及行和列的值,可以根据其他单元格的值来修改。
在这篇文章中,我们将看到如何在R编程语言中基于DataFrame中的其他列添加列。有各种方法可以做到这一点。让我们详细讨论一下。
方法1:使用 transform() 函数
R语言中的transform()方法是用来修改数据和执行突变的。它对提供给该函数的第一个参数进行转换。新的列也可以作为函数的第二个参数添加,它可以是在开始时声明的列表,也可以在运行时使用所需的正则表达式进行初始化。我们可以在第二个参数的左边指定新添加的列名,并在右边声明if-else表达式。if-else表达式由三部分组成。
- 测试数据的条件
- 第二部分在条件不满足时被评估
- 第三部分当它不满足时。
结果必须明确地进入原始数据框,以便与结果相关。
语法 。
transform(dataframe,x=c(..))
其中x是新添加的列。
例子 。
# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
col2=c(8,9,5,10),
col3=c(0,2,3,5))
# printing original data frame
print("Original Data Frame")
print (data_frame)
# transforming data frame
# declare col4 where if col1 is equal
# to col3, replace by col1+col3 value,
# otherwise by col1+col2 value
data_frame <- transform(
data_frame, col4= ifelse(col1==col3, col1+col2, col1+col3))
print("Modified Data Frame")
print(data_frame)
输出
[1] "Original Data Frame"
col1 col2 col3
1 1 8 0
2 2 9 2
3 3 5 3
4 -4 10 5
[1] "Modified Data Frame"
col1 col2 col3 col4
1 1 8 0 1
2 2 9 2 11
3 3 5 3 8
4 -4 10 5 1
方法2:使用 with() 方法
R中的with()方法可以用来评估表达式,然后转换数据框中包含的数据。With是一个通用函数,它在一个由数据构建的局部环境中评估指定为函数第二个参数的表达式,这些数据在函数的第一个参数中定义。任何逻辑表达式都可以作为该方法的第一个参数提供,在评估完with方法的参数部分的条件后,新列中的值将根据表达式的真值进行替换。
语法 。
with(data, expr, ...)
例子 。
# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
col2=c(8,9,5,10),
col3=c(0,2,3,5))
# printing original data frame
print("Original Data Frame")
print (data_frame)
# transforming data frame
# declare col4 where if col1 is equal
# to col3, replace by col1+col3 value,
# otherwise by col1+col2 value
data_frame$col4 <- with(
data_frame, ifelse(col1+col3>5, col1+col3, col1+col2))
print("Modified Data Frame")
print(data_frame)
输出
[1] "Original Data Frame"
col1 col2 col3
1 1 8 0
2 2 9 2
3 3 5 3
4 -4 10 5
[1] "Modified Data Frame"
col1 col2 col3 col4
1 1 8 0 9
2 2 9 2 11
3 3 5 3 6
4 -4 10 5 6
方法3:使用apply()方法
R语言中的apply()方法将一个组织良好的数据框或矩阵作为输入,并将一个向量、列表或数组作为输出。 apply()方法主要用于避免明确使用循环结构。任何函数都可以被指定到apply()方法中。其结果必须明确地进入原始数据框中,以便对结果进行处理。
语法: apply(X, margin, FUN)
参数:
- x: 一个数据框或一个矩阵
- margin: 在1和2之间取一个值或范围,以定义应用该函数的位置。
- margin=1: 对行进行操作
- margin =2 :在列上进行操作
- margin=c(1,2) : 对行和列都进行操作
- FUN: 应用的函数,其中内置的函数如平均数、中位数、总和、最小、最大,甚至可以应用用户定义的函数。
例子 。
# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
col2=c(8,9,5,10),
col3=c(0,2,3,5))
# printing original data frame
print("Original Data Frame")
print (data_frame)
# transforming data frame
# declare col4 where if col1 is
# equal to col3, replace by col1+col2
# value, otherwise by col3-col2 value
data_frame$col4 <- apply(
data_frame, 1, FUN = function(x) if(mean(x[1])>1) x[2]+x[1] else x[3]-x[2])
print("Modified Data Frame")
print(data_frame)
输出
[1] "Original Data Frame"
col1 col2 col3
1 1 8 0
2 2 9 2
3 3 5 3
4 -4 10 5
[1] "Modified Data Frame"
col1 col2 col3 col4
1 1 8 0 -8
2 2 9 2 11
3 3 5 3 8
4 -4 10 5 -5