r - 以正确的顺序组合
问题描述
我正在处理变量的组合。在我的模型中,组合 (A,B) 将类似于 (B,A)。我想重塑我的数据,以便以相同的顺序获得相似的组合。
我尝试使用该duplicated
功能并使用该功能,paste
但我没有解决问题。
这是我的第一张桌子:
df <- data.frame(V1=c("A","A","A","B","B","B"),
V2=c("B","C","D","A","D","A"))
这是我想要获得的:
df2 <- data.frame(V1=c("A","A","A","B","B","B"),
V2=c("B","C","D","A","D","A"),
Test=c("OK","OK","OK","FALSE","OK","FALSE"),
V1b=c("A","A","A","A","B","A"),
V2b=c("B","C","D","B","D","B"))
解决方案
假设“正确的顺序”是字母顺序,你可以使用
alphabetical <- function(x,y){x < y}
当 x,y 按字母顺序排序时返回 true,否则返回 false。
编辑:这是一个可行的解决方案:
df_sorted <- df %>% rowwise() %>% mutate(Test = alphabetical(as.character(V1),as.character(V2))) %>%
mutate(V1b = if (Test) {
as.character(V1)
} else {
as.character(V2)
}) %>%
mutate(V2b = if (Test) {
as.character(V2)
} else {
as.character(V1)
})
推荐阅读
- javascript - Heroku Deploy React 错误:没有从子编译器 ./src/App.css 得到结果
- substrate - 使用自定义类型(Substrate FRAME 托盘 + Polkadot/Substrate 前端)
- linker - ld 和 lld 仅使用我输入的路径
- .net - 如何为普通 .NET 控制台应用程序接收和处理来自 AWS SNS 的消息?
- docker - 如何在 DigitalOcean 上公开 Docker 和/或 Kubernetes 端口
- python-3.x - coremltools.converters.sklearn.convert 导致错误:NameError: name '_tree' is not defined
- flutter - 颤振:如何使文本靠近容器的上边缘?
- git - 如何根据git中的标签版本合并两个分支?
- tensorflow - srun:错误:忽略插件“x11”中的冲突选项“x11”
- reactjs - React 的 Hook 设置函数不会在提交时更新数组