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