如何通过 r 中的值列表对数据框进行子集化
您可以使用以下方法之一通过 R 中的值列表来子定义数据框:
方法一:使用Base R
df_new <- df[df$my_column %in% vals,]
方法2:使用dplyr
library (dplyr)
df_new <- filter(df, my_column %in% vals)
方法3:使用data.table
library (data.table)
df_new <- setDT(df, key=' my_column ')[J(vals)]
以下示例展示了如何在 R 中使用以下数据框来实际使用这些方法:
#create data frame
df <- data. frame (team=c('A', 'B', 'B', 'B', 'C', 'C', 'C', 'D'),
points=c(12, 22, 35, 34, 20, 28, 30, 18),
assists=c(4, 10, 11, 12, 12, 8, 6, 10))
#view data frame
df
team points assists
1 to 12 4
2 B 22 10
3 B 35 11
4 B 34 12
5 C 20 12
6 C 28 8
7 C 30 6
8 D 18 10
方法1:通过R库中的值列表来获取数据框的子集
以下代码显示如何对数据框进行子集化,使其仅包含团队列中具有“A”或“C”值的行:
#define values to subset by vals <- c(' A ', ' C ') #subset data frame to only contain rows where team is 'A' or 'C' df_new <- df[df$team %in% vals,] #view results df_new team points assists 1 to 12 4 5 C 20 12 6 C 28 8 7 C 30 6
生成的数据框仅包含“团队”列中具有“A”或“C”值的行。
请注意,我们在本示例中使用了基本的 R 函数,因此无需加载任何其他包。
方法2:通过dplyr中的值列表获取Dataframe子集
以下代码显示如何使用dplyr包中的filter()函数对数据框进行子集化,以仅包含team列中值为“A”或“C”的行:
library (dplyr) #define values to subset by vals <- c(' A ', ' C ') #subset data frame to only contain rows where team is 'A' or 'C' df_new <- filter(df, team %in% vals) #view results df_new team points assists 1 to 12 4 5 C 20 12 6 C 28 8 7 C 30 6
生成的数据框仅包含“团队”列中具有“A”或“C”值的行。
方法3:通过data.table中的值列表对dataframe进行子集化
以下代码显示如何使用data.table包中的函数对数据框进行子集化,以仅包含team列中具有“A”或“C”值的行:
library (data.table) #define values to subset by vals <- c(' A ', ' C ') #subset data frame to only contain rows where team is 'A' or 'C' df_new <- setDT(df, key=' team ')[J(vals)] #view results df_new team points assists 1: A 12 4 2: C 20 12 3: C 28 8 4: C 30 6
生成的数据框仅包含“团队”列中具有“A”或“C”值的行。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: