【问题标题】:How do I operate basic functions within a column in R?如何在 R 中的列中操作基本功能?
【发布时间】:2018-07-05 18:21:41
【问题描述】:

对于这个问题的措辞不佳,我深表歉意,我仍然是 R 的初学者,我仍在习惯正确的术语。我在下面提供了示例数据:

mydata <- data.frame(x = c(1, 2, 7, 19, 45), y=c(10, 12, 15, 19, 24))
View(mydata)

我的目的是找到 x 速度,为此我需要找到 1 和 2、2 和 7、7 和 19 之间的差异,等等。我该怎么做?

【问题讨论】:

    标签: r euclidean-distance


    【解决方案1】:

    您可以使用diff 函数。

    > diffs <- as.data.frame(diff(as.matrix(mydata)))
    > diffs
       x y
    1  1 2
    2  5 3
    3 12 4
    4 26 5
    > mean(diffs$x)
    [1] 11
    

    【讨论】:

    • 谢谢,这帮了大忙!有什么方法可以指定函数只查找 x 值的差异?
    • 你可以简单地做diff(mydata$x)
    • 这适用于数据框吗?当我运行它时,它会给我错误消息“二进制运算符的非数字参数”
    • @d125q 谢谢,这行得通!但是,当我运行它时,在它提供的新表中没有列的名称。我该如何解决这个问题?
    【解决方案2】:

    您可以使用dplyr::lead()dplyr::lag(),具体取决于您希望计算的排列方式

    library(dplyr)
    
    mydata <- data.frame(x = c(1, 2, 7, 19, 45), y=c(10, 12, 15, 19, 24))
    View(mydata)
    mydata %>% 
      mutate(x_speed_diff_lead = lead(x) - x
             , x_speed_diff_lag = x - lag(x))
    
    #    x  y x_speed_diff_lead x_speed_diff_lag
    # 1  1 10                 1               NA
    # 2  2 12                 5                1
    # 3  7 15                12                5
    # 4 19 19                26               12
    # 5 45 24                NA               26
    

    【讨论】:

    • 如果我的“x”变量真的被命名为“player_x”,我会在哪里替换它?会不会只是 {mydata %>% mutate(x_speed_diff_lead = lead(player_x) - player_x , x_speed_diff_lag = player_x - lag(player_x))},因为当我运行它时,我收到以下错误消息:{Evaluation error: non-numeric二元运算符的参数}
    • 您还必须更改数据中的名称:mydata &lt;- data.frame(player_x = c(1, 2, 7, 19, 45), y=c(10, 12, 15, 19, 24))。然后你可以运行mydata %&gt;% mutate(x_speed_diff_lead = lead(player_x) - player_x, x_speed_diff_lag = player_x - lag(player_x))
    • 而不是向量,如果我尝试用于减法的值是数据帧怎么办?我可以输入数据框的名称来代替向量吗?
    • @PaulIbrahim - 您是在问如何对数据框中的每个变量执行此操作吗?如果是这样,那么您可以使用do.call(cbind.data.frame, lapply(mydata, function(x) { lead(x) - x }))。如果您愿意,我可以将此添加到我的帖子中。如果这不是您要问的,那么让我们在聊天中继续。
    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2016-04-30
    • 2013-10-17
    • 1970-01-01
    • 2022-11-22
    相关资源
    最近更新 更多