簡體   English   中英

使用索引對 r 中的數據幀執行數學運算

[英]Using indexing to perform mathematical operations on data frame in r

我正在努力對數據框執行基本索引以執行數學運算。 我有一個包含美國所有 50 個州的數據框,其中包含一年中每個月的條目,因此有 600 個觀察值。 我希望找到每個州 12 月份的值減去 1 月份的值之間的差值。 我的數據如下所示:

> head(df)
  state year month             value
1    AL 2020    01               2.7
2    AK 2020    01                 5
3    AZ 2020    01               4.8
4    AR 2020    01               3.7
5    CA 2020    01               4.2
7    CO 2020    01               2.7

例如,AL 在 Dec 的值為 4.7,Jan 的值為 2.7,因此我想為該狀態返回 2。

我一直在嘗試使用 group_by 和 summary 函數來做到這一點,但無法弄清楚它的索引部分來獲取與條件相對應的值。 我找不到使用數據框上的索引來執行這些數學運算的資源,我將不勝感激,因為我將使用其他轉換。

使用dplyr

library(dplyr)
df %>%
  group_by(state) %>%
  summarize(year_change = value[month == "12"] - value[month == "01"])

這假設您的數據如您所描述的那樣——每個州每個月都有一個值。 如果您在給定月份的某個州缺少行或多次觀察,我不希望此代碼起作用。

另一種基於行順序而不是月份值的方法可能如下所示:

library(dplyr)
df %>%
  ## make sure things are in the right order
  arrange(state, month) %>% 
  group_by(state) %>%
  summarize(year_change = last(value) - first(value))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM