r - 提取具有特定条件的数据框行

标签 r dataframe subset

我有一个数据框,V1V2两个变量,有9行数据。

Original Data Frame:

                 Var1       Var2 
    sigma1       11          1
    alpha1       12          5
    pi1          13          3
    sigma2       14          4
    alpha2       21          9
    pi2          34          6
    sigma3       55          12
    alpha3       18          9
    pi3          19          10

我想分离所有对 alpha、sigma 和 pi 的观察。并使它们中的每一个成为一个新的数据框。

Ideal format afterwards:

    Data Frame 1:

        sigma1       11          1
        sigma2       14          4
        sigma3       55          12

    Data Frame 2:

        alpha1       12          5
        alpha2       21          9
        alpha3       18          9

    Data Frame 3:

        pi1          13          3
        pi2          34          6
        pi3          19          10

我想分离所有对 alpha、sigma 和 pi 的观察。并使它们中的每一个成为一个新的数据框。

最佳答案

我们可以使用eval(parse()) 来创建动态变量,试试这个例子:

#dummy data
df <- read.table(text="Var1       Var2 
sigma1       11          1
alpha1       12          5
pi1          13          3
sigma2       14          4
alpha2       21          9
pi2          34          6
sigma3       55          12
alpha3       18          9
pi3          19          10")

#get unique rownames
myNames <- unique(gsub(".$", "", rownames(df)))
myNames
#[1] "sigma" "alpha" "pi" 

#split to 3 data.frames
for(i in myNames)
  eval(parse(text=paste0("df_",i," <- df[ grepl('",i,"',rownames(df)),]")))

#check output
ls()
# [1] "df"       "df_alpha" "df_pi"    "df_sigma" "i"        "myNames" 
df_alpha
#        Var1 Var2
# alpha1   12    5
# alpha2   21    9
# alpha3   18    9

编辑: 正如@NealFultz 建议的那样,为了提高代码的可读性,我们可以使用assign:

for(i in myNames)
  assign(paste0("df_",i),df[ grepl(i,rownames(df)),])

关于r - 提取具有特定条件的数据框行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283130/

相关文章:

r - 在 R 数据框中堆叠不平衡的数据

r - ggplot条形图,具有与面相关的类别顺序

r - ggplot2:如何在x轴上显示完整时间戳(以毫秒为单位)?

R- Shiny | cat(list(...),file,sep,fill,labels,append)中的错误: argument 1 (type 'list' ) cannot be handled by 'cat'

python - 在具有更改值的新数据框中返回的数据框列

python - 充满字符串的数据框(带有一些空字符串);想要将一些列转换为整数,一些列转换为 float ,并将一些保留为字符串

r - 如何按R中一行中的值选择列

python - 如何获取pyspark数据框中具有最大值的列的名称

Haskell 子集递归

r - 'R' 不带循环的矩阵子集