每次列中出現一個值時,有沒有辦法增加一個數字?

餡餅

我有一個數據框,我想設置一個更廣泛的支點(將在主要問題的結尾解釋最終目標,以防我可能會以一種令人費解的方式來解決這個問題並且有人可以指出一個更聰明的解決方案) . 為此,我想在我的數據框中添加一列,該列每次在列中重複一個值時都會增加。例如,如果我有以下數據框:

my_df1 <- data.frame(col1 = c("A","D","B","E","A","G","G","E","G"),
                    col2 = c(1, 3, 5, 4, 3, 1, 1, 5, 5))
my_df1
  col1 col2
1    A    1
2    D    3
3    B    5
4    E    4
5    A    3
6    G    1
7    G    1
8    E    5
9    G    5

然後我想添加第三列,該列每次在 col1 中“重複”一個值時都會增加,指示到目前為止給定值在 col1 中出現的次數。我想要的數據框如下:

my_df2
  col1 col2 col3
1    A    1    1
2    D    3    1
3    B    5    1
4    E    4    1
5    A    3    2
6    G    1    1
7    G    1    2
8    E    5    2
9    G    5    3

因此,第一次出現在 col1 中的值時,增量從 1 開始。例如,當第二次在列中看到“A”(在第 5 行中)時,col3 增量為 2。據我所知,這是類似於 SQL 中的 row_number 函數。有人能建議像這樣增加的最佳方法是什麼嗎?

這個練習的目的是在我的工作場所為一個 pivot_wider 設置一個數據框。使用所需的數據框,我的代碼和輸出將如下所示:

my_df2_wide <- pivot_wider(data = my_df2,
                           names_from = col3,
                           names_prefix = "occurrence_",
                           values_from = col2)

my_df2_wide
# A tibble: 6 x 4
  col1  occurrence_1 occurrence_2 occurrence_3
  <chr>        <dbl>        <dbl>        <dbl>
1 A                1            3           NA
2 D                3           NA           NA
3 B                5           NA           NA
4 E                4           NA           NA
5 G                1            1            5
6 C               NA            5           NA
卡西克

這是否有效:

library(dplyr)
my_df1 %>% group_by(col1) %>% mutate(col3 = row_number()) %>% ungroup()
# A tibble: 9 x 3
# Groups:   col1 [5]
  col1   col2  col3
  <chr> <dbl> <int>
1 A         1     1
2 D         3     1
3 B         5     1
4 E         4     1
5 A         3     2
6 G         1     1
7 G         1     2
8 E         5     2
9 G         5     3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有沒有辦法計算一個變量在 excel 中出現(和不出現)另一個變量的時間?

有沒有辦法用第二個數據框中的一列填充一個數據框中的一列?

有沒有辦法在另一個地圖函數中使用地圖?

有沒有辦法在使用 excel javascript api 時遍歷一個範圍?

在不使用 Python 中的循環的情況下比較兩個數組時,有沒有辦法檢查第一個匹配元素?

有沒有辦法增加 C# 註冊表中單個 Windows 服務的超時值?

C++; 有沒有辦法讓我的 Switch 函數同時拒絕一個有效和無效的答案?

express js:有沒有辦法將url的所有其餘部分映射為一個參數?

有沒有辦法刪除除數組中最後一個之外的所有重複鍵?

有沒有辦法將每個結果添加到數據框的一行中?

有沒有辦法只用一個數組來編程康威的生命遊戲

有沒有辦法將 Swift/SwiftUI 中的 KeyPathComparator 傳遞給另一個函數?

有沒有辦法創建一個散點圖,其中一個列的子集在 x 軸上,另一個子集在 y 軸上?

有沒有辦法根據另一個列表中的值修改矩陣值?

Flex 容器:有沒有辦法在容器包裝時拉伸第一個項目的高度

有沒有辦法放置一個特定的值而不是一個最初需要但在javascript中未定義的值?

有沒有辦法在包中只包含一個模塊?

flutter:: 有沒有辦法使用 audioplayer 包只播放一個音頻文件?

有沒有辦法用“引號”快速括起一個單詞列表

有沒有辦法獲得我用來匹配 4 個數字的正則表達式?

有沒有辦法在同一個測試中參數化具有多種數據類型的 pytest?

Python:有沒有辦法知道一個類的實例是否已分配給一個變量?

有沒有辦法在 Node.js 中使用兩個回調函數的值(布爾值)?

有沒有辦法根據特定單元格的值將一個工作表上的一個單元格設置為等於另一個工作表上的一個單元格?

有沒有辦法找出重複系列中的一個或多個事件是否已被刪除?

有沒有辦法將一個靜態彈性 IP 分配給多個實例?

有沒有辦法在python中將一個單詞分成3個不同的部分?

有沒有辦法將四位數字轉換為 r 中的時間值?

有沒有辦法通過對 SAS 中另一個變量的數據進行分組來創建新變量?