如何使用R中的线索对数据集进行排序

时间:2020-10-08 13:40:19

标签: r tidyverse

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

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中做到吗?

2 个答案:

答案 0 :(得分:1)

这是建立基地的快速方法:

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

答案 1 :(得分:0)

使用across()中的dplyr

library(dplyr)
#Code
df2 <- df %>% mutate(across(everything(),~as.character(.))) %>%
  mutate(across(X214:X226,~ifelse(.==Cues,10,0))) %>% select(-Cues)

输出:

  X214 X330 X226
1    0    0   10
2   10   10   10
3    0   10    0
4    0   10    0