R中的Dataframe基于某些行名称删除行

R中的Dataframe基于某些行名称删除行,r,dataframe,R,Dataframe,在尝试了一段时间后,我放弃了。。。 我想从数据框中删除几行。 我想根据行名称删除它们 # print data to show that data frame has one column, and player # info is stored as rownames data > data Age Player 1 27 Player 2 28 Player 3 25 例如 现在我想说删除名为“Player 1”的行和名为“Player 2”的行。 因为它是我

在尝试了一段时间后,我放弃了。。。 我想从数据框中删除几行。 我想根据行名称删除它们

# print data to show that data frame has one column, and player
# info is stored as rownames
data
> data
         Age
Player 1  27
Player 2  28
Player 3  25
例如

现在我想说删除名为“Player 1”的行和名为“Player 2”的行。 因为它是我用来选择的行名,所以看起来更难

有人能帮我吗


谢谢:)

一种方法是使用
rownames()
选择具有提取运算符的
[
形式的行,如下所示

textData <- "Rownames|Age
Player 1|27
Player 2|28
Player 3|25"

data <- read.csv(text=textData,row.names="Rownames",header=TRUE,sep="|")
接下来,我们将对数据帧进行子集划分

data[!rownames(data) %in% c("Player 1","Player 2"),]
…和输出,由于输入数据帧中只有一列,因此输出作为向量打印:

> data[!rownames(data) %in% c("Player 1","Player 2"),]
[1] 25
subset(data,!rownames(data) %in% c("Player 1","Player 2"))
将此技术与
subset()
相结合可生成单行数据帧:

> data[!rownames(data) %in% c("Player 1","Player 2"),]
[1] 25
subset(data,!rownames(data) %in% c("Player 1","Player 2"))
…以及输出:

> subset(data,!rownames(data) %in% c("Player 1","Player 2"))
         Age
Player 3  25
>

一种方法是使用
rownames()

textData <- "Rownames|Age
Player 1|27
Player 2|28
Player 3|25"

data <- read.csv(text=textData,row.names="Rownames",header=TRUE,sep="|")
接下来,我们将对数据帧进行子集划分

data[!rownames(data) %in% c("Player 1","Player 2"),]
…和输出,由于输入数据帧中只有一列,因此输出作为向量打印:

> data[!rownames(data) %in% c("Player 1","Player 2"),]
[1] 25
subset(data,!rownames(data) %in% c("Player 1","Player 2"))
将此技术与
subset()
相结合可生成单行数据帧:

> data[!rownames(data) %in% c("Player 1","Player 2"),]
[1] 25
subset(data,!rownames(data) %in% c("Player 1","Player 2"))
…以及输出:

> subset(data,!rownames(data) %in% c("Player 1","Player 2"))
         Age
Player 3  25
>

base R中的行名称概念有其用途;但是,如果您想对它们执行任何类型的分析,最好将它们作为数据帧中的实际列。以下是数据的复制:

df <- data.frame(Age = c(27, 28, 25))
rownames(df) <- paste("Player", 1:3)
df

         Age
Player 1  27
Player 2  28
Player 3  25
基于播放器对数据帧进行子集设置 现在,行名称已在数据框中,您可以使用它们筛选数据。假设您的数据当前为:

df

   rowname Age
1 Player 1  27
2 Player 2  28
3 Player 3  25
您可以使用base R执行此操作:

df[!(df$Player %in% c("Player 1", "Player 2")), ]

  Age   Player
3  25 Player 3
或者,如果您更喜欢
dplyr
语法:

library(dplyr)

df %>%
  filter(!(Player %in% c("Player 1", "Player 2")))

  Age   Player
1  25 Player 3

base R中的行名称概念有其用途;但是,如果您想对它们执行任何类型的分析,最好将它们作为数据帧中的实际列。以下是数据的复制:

df <- data.frame(Age = c(27, 28, 25))
rownames(df) <- paste("Player", 1:3)
df

         Age
Player 1  27
Player 2  28
Player 3  25
基于播放器对数据帧进行子集设置 现在,行名称已在数据框中,您可以使用它们筛选数据。假设您的数据当前为:

df

   rowname Age
1 Player 1  27
2 Player 2  28
3 Player 3  25
您可以使用base R执行此操作:

df[!(df$Player %in% c("Player 1", "Player 2")), ]

  Age   Player
3  25 Player 3
或者,如果您更喜欢
dplyr
语法:

library(dplyr)

df %>%
  filter(!(Player %in% c("Player 1", "Player 2")))

  Age   Player
1  25 Player 3

使用
dput()
提供数据。在这种情况下,了解“Rowname”是否是数据中的一个变量或R添加的
rowname
。Len Greski提供的答案假设您创建了一个名为
rowname
@dcarlson的列/变量-我使用问题中的
rowname
,使用
read.csv()读取数据
并将该输入设置为输出数据框的行名称,但您将看到我的答案中的
数据
数据框没有名为
Rowname
的列。这就是答案使用
rownames()的原因
对数据进行子集划分。我理解。我的观点是OP没有提供可能重要的信息。但我得到的信息是反向的。如果它是列而不是行名,您的答案将失败。使用
dput()
提供您的数据。在这种情况下,重要的是要知道“行名”是否是数据中的一个变量或R添加的
rowname
。Len Greski提供的答案假设您创建了一个名为
rowname
@dcarlson的列/变量-我使用问题中的
rowname
,使用
read.csv()读取数据
并将该输入设置为输出数据框的行名称,但您将看到我的答案中的
数据
数据框没有名为
Rowname
的列。这就是答案使用
rownames()的原因
对数据进行子集划分。我理解。我的观点是OP没有提供可能重要的信息。但我的观点是颠倒过来的。如果它是列而不是行名,您的回答将失败。谢谢。我不得不对您的方法提出问题:方法1:我的行名没有名称,因此我无法执行“df$Player”。我试图找到如何重命名我的行名,但没有成功。方法2:不幸的是,它没有任何作用。当我使用行名(游戏)时,我仍然得到与以前相同的行名…“我的行名没有(列)名称,因此我无法执行
df$Player”_:代码
df$Player谢谢。我不得不对你的方法提出问题:方法1:我的行名没有名字,因此我无法使用“df$Player”。我试图找到如何重命名我的行名,但没有成功。方法2:不幸的是,它什么都没有做。当我使用行名(游戏)时,我仍然得到与以前相同的行名…“我的行名没有(列)”名字,所以我不能做
df$Player”\代码
df$Player