首页 > 解决方案 > 如何使用 R 中的线索对数据集进行排序

问题描述

我有一个大数据集,但这是我的一组数据:

df <- read.table(header = TRUE, text =
"Cues   214 330 226
M   A   B   M
Z   Z   Z   Z
P   J   P   12
R   K   R   11

"
)

提示栏指导我得到下表。如果是同一个字母,则为 10,否则为 0

df <- read.table(header = TRUE, text =
"214    330 226
0   0   10
10  10  10
0   10  0
0   10  0
"
)

我们可以在 R 中做到这一点吗?

标签: rtidyverse

解决方案


这是base的快速方法:

df[] = lapply(df, as.character) # convert to character, if needed
result = df[-1]
result[] = lapply(result, function(x) ifelse(x == df$Cues, 10, 0))
result
#   X214 X330 X226
# 1    0    0   10
# 2   10   10   10
# 3    0   10    0
# 4    0   10    0

并且dplyr

library(dplyr) # across requires dplyr version 1.0 or higher
df %>% 
  mutate(
    across(where(is.factor), as.character),  # convert to character, if needed
    across(-Cues, ~ if_else(. == Cues, 10, 0))
  ) %>%
  select(-Cues)
#   X214 X330 X226
# 1    0    0   10
# 2   10   10   10
# 3    0   10    0
# 4    0   10    0

推荐阅读