📜  在 R 编程中从向量创建数据框

📅  最后修改于: 2022-05-13 01:55:09.021000             🧑  作者: Mango

在 R 编程中从向量创建数据框

向量可以定义为具有相同数据类型的数据序列。在 R 中,可以使用c()函数创建向量。
R向量用于保存相同数据类型的多个数据值,类似于C语言中的数组。

数据框是用于保存值的二维表结构。在数据框中,每一列包含一个变量的值,每一行包含每一列的值。数据框可以存储数值数据或字符数据或因子类型数据。

数据框中的每一列都应包含相同数量的数据元素。数据帧可以从 R 中的向量转换。

要使用向量在 R 中创建数据框,我们必须首先拥有一系列包含数据的向量。
data.frame()函数用于从 R 中的向量创建数据框。

句法:

data.frame(vectors)

现在让我们从 R 中的向量制作一个数据框。
这里我们有学生数据的向量,我们必须将它们转换为数据框。

准备向量:

  • User.ID 向量:学生的 ID 向量 User.ID 包含学生的条目,后跟一个 1 到 8 的数字。
  • 姓名向量:学生姓名。
  • 性别向量:学生的性别,包含条目“男性”和“女性”。
  • 分数向量:它包含学生获得的分数。
  • 人数:包含每个学生的人数。

使用向量构建数据框:

# R program to illustrate
# data frame from vector
   
User.ID <- sprintf("User % d", 1:8) 
Name <- c("Jhon", "Lee", "Suzan", "Abhinav",
          "Brain", "Emma", "David", "Alice")
   
gender <- c("Male", "Male", "Female", "Male",
            "Male", "Female", "Male", "Female")
   
Marks <- c(56, 76, 86, 96, 73, 87, 47, 98)
    
Number <- c('111-222', '222-333', '333-444', '444-666',
            '333-888', '000-888-777', '999-000', '222-456')
    
class.df<- data.frame(User.ID, Name, 
                      gender, Marks, Number)
class.df

输出:结果将是一个数据框。

在上面的例子中,我们有 5 个向量,Name 是一个长度为 8 的字符向量,User.ID 是一个数字向量以及上述所有向量,使用它们我们创建了一个列长度为 8 的数据框和行长 5。

创建数据框后,我们可以应用各种数据框操作。

获取数据框的结构:

str()函数用于获取数据帧的结构。

例子:

# R program to illustrate
# data frame from vector
   
User.ID <- sprintf("User % d", 1:8) 
Name <- c("Jhon", "Lee", "Suzan", "Abhinav",
          "Brain", "Emma", "David", "Alice")
   
gender <- c("Male", "Male", "Female", "Male",
            "Male", "Female", "Male", "Female")
   
Marks <- c(56, 76, 86, 96, 73, 87, 47, 98)
    
Number <- c('111-222', '222-333', '333-444', '444-666',
            '333-888', '000-888-777', '999-000', '222-456')
    
class.df<- data.frame(User.ID, Name, 
                      gender, Marks, Number)
str(class.df)

输出:

在上面使用str()函数的代码中,我们已经看到了数据帧的结构。

从数据框中提取数据

在 R 中,我们可以使用列名从数据框中访问特定列。
例子:

# R program to illustrate
# data frame from vector
   
User.ID <- sprintf("User % d", 1:8) 
Name <- c("Jhon", "Lee", "Suzan", "Abhinav",
          "Brain", "Emma", "David", "Alice")
   
gender <- c("Male", "Male", "Female", "Male",
            "Male", "Female", "Male", "Female")
   
Marks <- c(56, 76, 86, 96, 73, 87, 47, 98)
    
Number <- c('111-222', '222-333', '333-444', '444-666',
            '333-888', '000-888-777', '999-000', '222-456')
    
class.df<- data.frame(User.ID, Name, 
                      gender, Marks, Number)
extract<- data.frame(class.df$Name,
                     class.df$gender)
print(extract)

输出:

向数据框中添加行和列

添加列:
要添加一列,我们只需在数据框中添加一个新的列向量。
让我们以上面的例子来说明如何添加列。
例子:

# R program to illustrate
# data frame from vector
   
User.ID <- sprintf("User % d", 1:8) 
Name <- c("Jhon", "Lee", "Suzan", "Abhinav",
          "Brain", "Emma", "David", "Alice")
   
gender <- c("Male", "Male", "Female", "Male",
            "Male", "Female", "Male", "Female")
   
Marks <- c(56, 76, 86, 96, 73, 87, 47, 98)
    
Number <- c('111-222', '222-333', '333-444', '444-666',
            '333-888', '000-888-777', '999-000', '222-456')
    
class.df<- data.frame(User.ID, Name, 
                      gender, Marks, Number)
  
class.df$New.column<- sprintf("new.data % d", 1:8)
modified.dataframe <- class.df
print(modified.dataframe)

输出:

在上面的示例中,我们使用上面的数据框向数据框添加了一个新列,其中包含数据元素 new.data。

添加行
要在数据框中添加一行,我们必须获取另一个数据框,并且我们必须使用rbind()函数绑定它们。

让我们以上面的例子来说明如何向数据框添加新行。
例子:

# R program to illustrate
# data frame from vector
   
User.ID <- sprintf("User % d", 1:8) 
Name <- c("Jhon", "Lee", "Suzan", "Abhinav",
          "Brain", "Emma", "David", "Alice")
   
gender <- c("Male", "Male", "Female", "Male",
            "Male", "Female", "Male", "Female")
   
Marks <- c(56, 76, 86, 96, 73, 87, 47, 98)
    
Number <- c('111-222', '222-333', '333-444', '444-666',
            '333-888', '000-888-777', '999-000', '222-456')
    
class.df<- data.frame(User.ID, Name, 
                      gender, Marks, Number)
  
# create another data frame
User.ID <- sprintf("User % d", 9:12)
  
Name <- sprintf("new.data % d", 9:12)
  
gender <- c("Male", "Male", "Female")
  
Marks <- c( 87, 47, 98)
   
Number <- sprintf("new.number % d", 9:12)
new.data<- data.frame(User.ID, Name, gender, Marks, Number)
  
final.data <- rbind(class.df, new.data)
  
print(final.data)

输出:

在上面的代码中,我们创建了一个新的数据框“new.data”,其中包含另外 3 行,然后将两个数据框绑定在一起,结果添加了带有“new.data”的行。