【问题标题】:Two mixed columns in data frame [closed]数据框中的两个混合列[关闭]
【发布时间】:2021-05-02 20:55:26
【问题描述】:

我有一个包含两个字符向量的数据框:

data.frame(
           matPA = c("PA66", "SB3", "PA66GF", "PA66", "SB2"), 
           matSB = c("SB1", "PA66", "SB1", "SB2", "PA66GF")
)

我想在正确的列中使用正确的字符,例如PA66 & PA66GF 转 matPA 和 SB2 & 3 转 matSB:

data.frame(
           matPA = c("PA66", "PA66", "PA66GF", "PA66", "PA66GF"), 
           matSB = c("SB1", "SB3", "SB1", "SB2", "SB2")
)

非常感谢。

【问题讨论】:

  • 你能说明逻辑吗
  • 您能解释一下您希望使用哪些信息来区分动物和颜色吗?即,必须有 some 您认为计算机应该使用的标准 - 您是否有存储计划使用的动物名称和/或颜色名称的列表?你能解释/证明为什么使用colors() 对你来说不是一个可行的解决方案吗?

标签: r dataframe if-statement multiple-columns


【解决方案1】:

d <- data.frame(
           matPA = c("PA66", "SB3", "PA66GF", "PA66", "SB2"), 
           matSB = c("SB1", "PA66", "SB1", "SB2", "PA66GF")
)

library(dplyr)

d2 <- apply( d, 1, function(r) {
    r[ order( grepl("^SB",r)) ]
}) %>% t %>% as.data.frame %>% setNames( names(d) )

也许像这样。

【讨论】:

  • 对不起,我必须澄清我的问题。没有颜色功能怎么解决?
  • 抱歉,接下来尝试澄清我的问题。希望这个更清楚。
  • 正确。这个问题的方向很奇怪。希望您通过这一切学到的不仅仅是一些漂亮的 R。
  • 非常感谢。这就是解决方案。当然,我学到了很多。
【解决方案2】:

你可以使用pmin/pmax

df <- transform(df, matPA = pmin(matPA, matSB), matSB = pmax(matPA, matSB))
df

#   matPA matSB
#1   PA66   SB1
#2   PA66   SB3
#3 PA66GF   SB1
#4   PA66   SB2
#5 PA66GF   SB2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-06
    相关资源
    最近更新 更多