R语言 从矢量创建数据框
向量可以被定义为具有相同数据类型的数据序列。在R语言中,可以使用 c() 函数创建一个向量。
R向量用于保存同一数据类型的多个数据值,类似于C语言中的数组。
数据框架 是一个2维的表结构,用来保存数值。在数据框架中,每一列包含一个变量的值,同时每一行也包含每一列的值。数据框可以存储数字数据或字符数据或因子类型的数据。
数据框中的每一列都应包含相同数量的数据元素。数据框可以在R中由向量转换而来。
要在R中使用向量创建一个数据框,我们必须先有一系列包含数据的向量。
data.frame() 函数用来在R中从向量创建一个数据框。
语法
data.frame(vectors)
现在让我们在R中用向量制作一个数据框。
这里我们有学生数据的向量,我们必须把它们转换成数据框。
准备好这些向量
- User.ID向量: 学生的ID 向量User.ID包含学生的条目,后面直接跟上一个从1到8的数字。
- Name向量: 学生的姓名。
- 性别向量: 学生的性别,包含 “男性 “和 “女性 “两个条目。
- 分数 向量:它包含学生的分数。
- 编号 :包含每个学生的编号。
使用向量建立数据框架
# 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.dfName,
class.dfgender)
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 “中增加了几条记录。