创建数据集之数据框

数据框的数据结构与矩阵相似。各列的数据类型可以不相同。数据框的每列是一个变量,每行是一个观测样本。每列的长度必须相同。

创建数据框

  • 创建数据框

数据框使用data.frame函数来创建,其函数原型如下:

data.frame(...,row.names = NULL,stringsAsFactors = default.stringsAsFactors())

其中row.namesNULL或指定要用作行名的列的单个整数或字符串,或者给出数据帧的行名的字符或整数向量;stringsAsFactors用来描述是否将字符型向量自动转换为因子,默认转换,若不改变的话使用stringsAsFactors = FALSE 来指定即可。

例子:

df <- data.frame(姓名 = c("张三","李四","王五"), 成绩 = c(66,77,88),籍贯 = c("天津","北京","广州"))
df <- data.frame(姓名 = c("张三","李四","王五"),成绩 = c(66,77,88),籍贯 = c("天津","北京","广州"),row.names = c("张三信息","李四信息","王五信息"))
#或者分开来写
姓名 <- c("张三","李四","王五")
成绩 <- c(66,77,88)
籍贯 <- c("天津","北京","广州")
df <- data.frame(姓名,成绩,籍贯)

在这里插入图片描述图一

有时用as.data.frame函数可以将另一种数据类型强制转换成数据框类型。

myList <- list(姓名 = c("张三","李四","王五"),成绩 = c(66,77,88),籍贯 = c("天津", "北京","广州"))
df <- as.data.frame(myList)
a <- array(1:20,c(4,5))
df <- as.data.frame(a)
a <- array(1:15,c(3,5),dimnames = list(c("R1","R2","R3"),c("C1","C2","C3","C4","C5")))
df <- as.data.frame(a)

在这里插入图片描述图二

  • 数据框的引用

一、直接引用

df <- data.frame(姓名 = c("张三","李四","王五"),成绩 = c(66,77,88),籍贯 = c("天津","北京","广州"))
df[3,3]                                       #返回值为一个因子
df[3,"籍贯"]                                  #与d1[3,3]是一样的
df[2]                                         #返回的是仍是一个数据框
df[2,]                                        #返回的是一个向量
df[,2]
df[,"籍贯"]
df[c(1,3)]                                    #返回的是仍是一个数据框
df[c(1,3),]                                   #返回第1行和第3行的数据
df[,c(1,3)]                                   #与df[c(1,3)]是一样的
df[c(1,2),c(1,3)]

我们可以用class函数来查询数据的类型
在这里插入图片描述图一

二、使用名称引用

df <- data.frame(姓名 = c("张三", "李四", "王五"),成绩 = c(66,77,88),籍贯 = c("天津", "北京", "广州"))
df["姓名"]                             #返回值为数据框
df[,"姓名"]                            #与上面的是一样的
df$姓名
df[["姓名"]]

在这里插入图片描述图二

三、访问具体元素

df <- data.frame(姓名 = c("张三","李四","王五"),成绩 = c(66,77,88),籍贯 = c("天津","北京","广州"))
df$姓名[1]
df[["姓名"]][1]
df[[1]][1]
df[2,3]
df[2,"籍贯"]

在这里插入图片描述图四

  • 数据框的修改
df <- data.frame(姓名 = c("张三","李四","王五"),成绩 = c(66,77,88),籍贯 = c("天津", "北京", "广州"),stringsAsFactors = FALSE)
#stringsAsFactors默认值为TRUE,这意味着用字符串创建的数据框,R会将向量处理为因子。如果,不希望这样处理,需要将其强制设置为FALSE             
myList <- list("赵四",100,"辽宁")
df <- rbind(df,myList)
#可以用list函数,也可以用c函数
my <- c("赵四",100,"辽宁")
df <- rbind(df,my)
#创建一个新列表,保存性别。使用cbind函数将性别添加到df中
myList <- list(性别 = c("男","男","女"))
df <- cbind(df,myList)
#或者使用
df <- cbind(df,性别 = c("男","男,"女"))
df <- data.frame(df,性别 = c("男","男","女"))
df$性别 <- c("男","男","女")
df$成绩[1] = 99                                  #修改某个元素的值
df$姓名[1] = "赵四"
df[2,2] = 99
df[[3]][2] = "上海"
df[3,] = c("王二",100,"上海")                     #修改某一行所有的值
df <- df[-3,]                                    #删除第3行数据
df <- df[,-3]                                    #删除第3列的数据
df <- df[-3]                                     #与上面是一样的
df <- df[c(-2,-3),]                              #删除第2行和第3行的数据
df <- df[c(-2,-3)]                               #删除第2列和第3列的数据
df <- df[,c(-2,-3)]
#如果不想改变数据类型,可以使用drop参数
df1 <- df[,c(-2,-3),drop = FALSE]                #没有在函数原型列出   
  • 参考资料

《R语言实战》第二版

R语言入门基础

data,frame函数的使用帮助

class函数的使用帮助

上述的使用帮助都可以使用help函数进行查询。

猜你喜欢

转载自blog.csdn.net/weixin_46784010/article/details/107304558