在 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”的行。