看看下面的資料框(df)。
| 日期 | 模塊 |
|---|---|
| 26-11-2021 | NA, 高級化學, 生物化學 |
| 25-11-2021 | 食品物理、食品化學 |
我想按字母順序排列模塊列的內容。期望的輸出:
| 日期 | 模塊 |
|---|---|
| 26-11-2021 | 高級化學,生物化學,NA |
| 25-11-2021 | 食品化學、食品物理 |
為了達到上述結果,我嘗試了以下方法:
df[lapply(strsplit(as.character(df$Modules), ','), sort)),]
沒有成功可悲。我犯了什么根本性錯誤?
uj5u.com熱心網友回復:
使用 將已排序的字串折疊回一個字串toString。
df$Modules <- sapply(strsplit(as.character(df$Modules), ',\\s*'),
function(x) toString(sort(x)))
df
# Date Modules
#1 26-11-2021 Advanced chemistry, Biochemistry, NA
#2 25-11-2021 Food chemistry, Food physics
資料
df <- structure(list(Date = c("26-11-2021", "25-11-2021"),
Modules = c("NA, Advanced chemistry, Biochemistry",
"Food physics, Food chemistry")),
row.names = c(NA, -2L), class = "data.frame")
uj5u.com熱心網友回復:
我們可能會使用separate_rows從tidyr
library(dplyr)
library(tidyr)
df1 %>%
separate_rows(Modules, sep = ",\\s*") %>%
arrange(Date, Modules) %>%
group_by(Date) %>%
summarise(Modules = toString(Modules))
# A tibble: 2 × 2
Date Modules
<chr> <chr>
1 25-11-2021 Food chemistry, Food physics
2 26-11-2021 Advanced chemistry, Biochemistry, NA
資料
df1 <- structure(list(Date = c("26-11-2021", "25-11-2021"),
Modules = c("NA, Advanced chemistry, Biochemistry",
"Food physics, Food chemistry")), row.names = c(NA, -2L), class = "data.frame")
uj5u.com熱心網友回復:
我猜你可以使用訂單嗎?
v<-c("Z","X","Y","A","B","C")
df<-data.frame(1:6,v)
> df[order(df$v),]
X1.6 v
4 4 A
5 5 B
6 6 C
2 2 X
3 3 Y
1 1 Z
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/339871.html
上一篇:k最小未排序陣列的時空復雜度
下一篇:按日期列對角材料表進行排序
