【问题标题】:pass the content of one data frame to another in r在 r 中将一个数据帧的内容传递给另一个数据帧
【发布时间】:2018-09-07 14:24:47
【问题描述】:

我目前正在学习 R,以便在我的大学里写论文。

在我的项目中,我有一个包含 2 列和 6001 行的数据框。在我的第一列中,我有从 10000,9999,9998 到 4000 的数字,在第二列中,我有数字元素。在我看来,我想做一些非常简单的事情。我想创建一个大小为原始数据框一半的第二个数据框,其中包含第一列的偶数和第二列的数字。

我尝试了一些没有按计划进行的脚本。我的第一个脚本是:ifelse(tkk[1] %% 2 == 0, tkal&lt;-tkk, 0)。然后我尝试了这个: tkal <-case_when((tkk[1]%%2 ==0)~ tkk)。但是我的两个脚本都没有运行或者没有我想要的结果。

你们中的任何人有解决方案或更好的主意,以便我可以解决这个简单的任务吗?

提前谢谢你

【问题讨论】:

    标签: r dataframe if-statement case-when


    【解决方案1】:

    如果 tkk 是您的数据框,您可以执行以下操作

    tkk[tkk[,1]%%2==0,]
    

    这将返回数据框中第一列具有偶数值的所有列。

    我使用的代码:

    tkk=data.frame(1:20,rep(1,20))
    tkk[tkk[,1]%%2==0,]
    #2      2          1
    #4      4          1
    #6      6          1
    #8      8          1
    #10    10          1
    #12    12          1
    #14    14          1
    #16    16          1
    #18    18          1
    #20    20          1
    

    【讨论】:

    • 假设第 1 列被命名为“my_col”,可以做一些等效但更容易阅读的事情:subset(tkk, my_col %% 2 == 0)
    • 非常感谢@jdobres。我用你的线解决了我的问题。
    【解决方案2】:

    试试tkk2 &lt;- dplyr::filter(tkk, first_column %% 2 == 0)

    请注意,第二列不需要任何条件,因为 R 假定 data.frame 中的列具有唯一类型。

    【讨论】:

    • 感谢@ANG 抽出宝贵时间帮助我解决问题
    【解决方案3】:

    您正在寻找子集。如果你有 NA 值,我建议使用which()

    tkal <- tkk[which(tkk[[1]] %% 2 ==0),]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-16
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      相关资源
      最近更新 更多