如何在R中子集行和列

如何在R中子集行和列,r,R,我是R的新手。当我读《R在行动》一书时,我遇到了一个问题。代码newdatadataframe[i,j]之间的区别是,语法用于将行和列从R数据帧中子集,其中i表示索引或逻辑向量到子集行,而j表示索引或逻辑向量到子集列 比如说, newdata[1,3]将从第1行和第3列返回值 newdata[1,3:5]将返回第1行和第3到5列的值 newdata[1:4,3:5]将返回1到4行和3到5列的值 如果其中任何一个值为空,则R表示所有行/列的子集 newdata[1:4,]将返回1到4行和所有

我是R的新手。当我读《R在行动》一书时,我遇到了一个问题。代码
newdata
dataframe[i,j]
之间的区别是,语法用于将行和列从R数据帧中子集,其中
i
表示索引或逻辑向量到子集行,而
j
表示索引或逻辑向量到子集列

比如说,

  • newdata[1,3]
    将从第1行和第3列返回值
  • newdata[1,3:5]
    将返回第1行和第3到5列的值
  • newdata[1:4,3:5]
    将返回1到4行和3到5列的值
如果其中任何一个值为空,则R表示所有行/列的子集

  • newdata[1:4,]
    将返回1到4行和所有列
  • newdata[,1:5]
    将返回所有行和1到5列
  • newdata[,]
    将返回所有行和列
另一个警告是,如果只想对数据帧的列进行子集,则不一定需要
。因此,要将第3列子集到第5列,您不仅可以执行
newdata[,3:5]
,还可以执行
newdata[3:5]
,它们返回相同的输出



了解到在您的案例中,您正在执行
newdata
dataframe[i,j]
语法用于从R数据帧中子集行和列,其中
i
表示索引或逻辑向量到子集行,
j
表示索引或逻辑向量到子集列

比如说,

  • newdata[1,3]
    将从第1行和第3列返回值
  • newdata[1,3:5]
    将返回第1行和第3到5列的值
  • newdata[1:4,3:5]
    将返回1到4行和3到5列的值
如果其中任何一个值为空,则R表示所有行/列的子集

  • newdata[1:4,]
    将返回1到4行和所有列
  • newdata[,1:5]
    将返回所有行和1到5列
  • newdata[,]
    将返回所有行和列
另一个警告是,如果只想对数据帧的列进行子集,则不一定需要
。因此,要将第3列子集到第5列,您不仅可以执行
newdata[,3:5]
,还可以执行
newdata[3:5]
,它们返回相同的输出


了解到在您的案例中,您正在执行
newdata
manager <- c(1, 2, 3, 4, 5)
date <- c("10/24/08", "10/28/08", "10/1/08", "10/12/08", "5/1/09")
country <- c("US", "US", "UK", "UK", "UK")
gender <- c("M", "F", "F", "M", "F")
age <- c(32, 45, 25, 39, 99)
q1 <- c(5, 3, 3, 3, 2)
q2 <- c(4, 5, 5, 3, 2)
q3 <- c(5, 2, 5, 4, 1)
q4 <- c(5, 5, 5, NA, 2)
q5 <- c(5, 5, 2, NA, 1)
leadership <-
  data.frame(manager, date, country, gender, age, q1, q2, q3, q4, q5)

names(leadership)[1:2] <- c("managerID", "testDate")
leadership$age[leadership$age == 99] <- NA
leadership <- within(leadership, {
  agecat <- NA
  agecat[age > 75] <- "Elder"
  agecat[age >= 55 & age <= 75] <- "Middle Aged"
  agecat[age < 55] <- "Young"
})
leadership
newdata <- leadership[order(leadership$age),]
newdata
newnewdadta <- leadership[order(leadership$age)]
newnewdadta
newdata
#  managerID testDate country gender age q1 q2 q3 q4 q5 agecat
#3         3  10/1/08      UK      F  25  3  5  5  5  2  Young
#1         1 10/24/08      US      M  32  5  4  5  5  5  Young
#4         4 10/12/08      UK      M  39  3  3  4 NA NA  Young
#2         2 10/28/08      US      F  45  3  5  2  5  5  Young
#5         5   5/1/09      UK      F  NA  2  2  1  2  1   <NA>
order(leadership$age)
#[1] 3 1 4 2 5
newnewdadta <- leadership[order(leadership$age)]
newnewdadta

#  country managerID gender testDate age
#1      US         1      M 10/24/08  32
#2      US         2      F 10/28/08  45
#3      UK         3      F  10/1/08  25
#4      UK         4      M 10/12/08  39
#5      UK         5      F   5/1/09  NA