R语言 合并不等长的向量或数据帧

R语言 合并不等长的向量或数据帧

在这篇文章中,我们将看到如何在R编程语言中把不等长的向量或数据帧合并成一个数据帧。

使用的函数

  1. c(“Value1”, “Value2”, “Value3”) : 这是一个通用函数,它将其参数结合起来。默认的方法是将其参数(Value)组合成一个矢量。
  2. length(vector): 获取或设置向量、因子或任何其他R对象的长度。
  3. max(…): 返回它的参数中所有数值的最大值。
  4. rep(x, ...): 复制x中的值,第二个参数可以是times、length()、length.out、each中的任何一个。

分步实现

第1步: 使用c()函数准备数据框架的向量。这里我们把学生数据和 Rollno , Name , Marks,Age 作为一个向量。正如你在下面看到的,我们只有前三个学生的姓名和年龄。我们没有其他三人的姓名和年龄数据。同时,我们也没有最后一个学生的分数。

Rollno <- c("5", "6", "7", "8", "9", "10")
Name <- c("John Doe", "Jane Doe", "Bill Gates")
Marks <- c("80", "75", "95", "96", "70", "86")
Age <- c("13", "13", "14")

第2步: 你可以看到上面的数据,Rollno, Name, Marks, 和Age的长度分别是6, 3, 5, 和3。现在,通过使用 max() 函数。在max()函数中,我们通过 length() 函数获得所有向量的长度。我们将得到我们创建的所有向量的最大长度,并将这个长度存储到 maxlength 变量中。同时,为测试目的,通过打印来检查长度。

Rollno <- c("5", "6", "7", "8", "9", "10")       # length = 6
Name <- c("John Doe","Jane Doe", "Bill Gates")   # length = 3
Marks <- c("80", "75", "95", "96", "70")         # length = 5
Age <- c("13", "13", "14")                       # length = 3
  
maxlength = max(length(Rollno), length(Name),
                length(Marks), length(Age))
print(maxlength)

输出

6

第3步: 姓名和年龄矢量的长度为3,分数的长度为5。 因此,我们应该用 NA 值替换剩余的黑点。为此,我们将使用 rep() 函数,其中第一个参数是NA,这里我们使用剩余黑点的长度作为第二个参数。在用NA填充黑点之后,我们将用同样的 c ( ) 函数更新向量。

Rollno <- c("5", "6", "7", "8", "9", "10")      
Name <- c("John Doe","Jane Doe", "Bill Gates")   
Marks <- c("80", "75", "95", "96", "70")        
Age <- c("13", "13", "14")                       
maxlength = max(length(Rollno), length(Name),
                length(Marks), length(Age))
  
Rollno = c(Rollno, rep(NA, maxlength - length(Rollno))) 
  
# fill last three spaces by NA.
Name = c(Name, rep(NA, maxlength - length(Name)))   
  
# fill last one spaces by NA.
Marks = c(Marks, rep(NA, maxlength - length(Marks))) 
  
# fill last three spaces by NA.
Age = c(Age, rep(NA, maxlength - length(Age)))

第4步: 现在,我们将使用 data.frame() 函数创建一个更新向量的DataFrame,并将其存储在 studentdata 变量中。

Rollno <- c("5", "6", "7", "8", "9", "10")       
Name <- c("John Doe","Jane Doe", "Bill Gates")   
Marks <- c("80", "75", "95", "96", "70")         
Age <- c("13", "13", "14")                       
  
maxlength = max(length(Rollno), length(Name),
                length(Marks), length(Age))
  
Rollno = c(Rollno, rep(NA, maxlength - length(Rollno)))
Name = c(Name, rep(NA, maxlength - length(Name)))
Marks = c(Marks, rep(NA, maxlength - length(Marks)))
Age = c(Age, rep(NA, maxlength - length(Age)))
  
studentdata <- data.frame(Rollno, Name, Marks, Age)
display(studentdata)

输出

在R语言中合并不等长的向量或数据帧

‘studentdata’ 数据框架

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程