【问题标题】:R match rownames from different dataframe columns and replace with 1(if match) and 0(if no match)R 匹配来自不同数据框列的行名并替换为 1(如果匹配)和 0(如果不匹配)
【发布时间】:2012-03-22 14:35:28
【问题描述】:

我有一个关于匹配列的问题,如果匹配,则将其替换为 1,如果不匹配,则将其替换为 0。我有一个带有列名的矩阵。我想将 ik 与其他 3 个数据框列匹配,并在该矩阵中替换它是否匹配。

最后我想创建这个矩阵:

   dataframe1 dataframe2 dataframe3
aaa    1     0     0
aab    0     1     0
aac    1     0     0
aad    0     1     1
aae    1     1     1

dataframe1 <- c("aaa","aac","aae") 
dataframe2 <- c("aab","aad","aae") 
dataframe3 <- c("aad","aae")

谁能帮我解决这个问题?

【问题讨论】:

  • dataframe1
  • 好。现在把它放到你的问题中,我可能会想看看。

标签: r matrix replace match


【解决方案1】:

给你:

df1 <- c("aaa","aac","aae")
df2 <- c("aab","aad","aae") 
df3 <- c("aad","aae", "x", "y")

dfs <- list(df1=df1, df2=df2)

zz <- sapply(dfs, function(x)df3 %in% x)
rownames(zz) <- df3
zz
      df1   df2
aad FALSE  TRUE
aae  TRUE  TRUE
x   FALSE FALSE
y   FALSE FALSE

【讨论】:

  • 要获得零和一,请执行zz &lt;- sapply(dfs, function(x)1*(df3 %in% x))
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 2020-09-10
相关资源
最近更新 更多