如何将数据帧转换为R中的联立方程

问题描述 投票:0回答:1

我有这个矩阵。

mat<-c("A","NODATA","NODATA","NODATA","A","B","C","NODATA","A","B","C","NODATA","D","E","A","NODATA","D","B","A","NODATA")
mat2 <- matrix(mat<-c("A","NODATA","NODATA","NODATA","A","B","C","NODATA","A","B","C","NODATA","D","E","A","NODATA","D","B","A","NODATA"),nrow = 4,ncol = 5)
mat3<-t(mat2)
colnames(mat3)<-c("col1","col2","col3","col4")
mat3

     col1 col2     col3     col4    
[1,] "A"  "NODATA" "NODATA" "NODATA"
[2,] "A"  "B"      "C"      "NODATA"
[3,] "A"  "B"      "C"      "NODATA"
[4,] "D"  "E"      "A"      "NODATA"
[5,] "D"  "B"      "A"      "NODATA"

我想按以下R中的方式更改数据框。

A B C D E NODATA
1 0 0 0 0 1
1 1 1 0 0 1
1 1 1 0 0 1
1 0 0 1 1 1
1 1 0 1 1 1

你知道什么主意吗?

谢谢。

r dataframe tidyverse linear-programming
1个回答
0
投票
library(dplyr)
data.frame(rows=seq_len(nrow(mat3))[row(mat3)], values=c(mat3)) %>%
  mutate(a=1) %>%
  pivot_wider(id_cols="rows", names_from="values", values_from="a", values_fn=list(a=length)) %>%
  mutate_all(~ +!is.na(.)) %>%
  select(-rows) %>%
  select(sort(colnames(.)))
# # A tibble: 5 x 6
#       A     B     C     D     E NODATA
#   <int> <int> <int> <int> <int>  <int>
# 1     1     0     0     0     0      1
# 2     1     1     1     0     0      1
# 3     1     1     1     0     0      1
# 4     1     0     0     1     1      1
# 5     1     1     0     1     0      1

data.frame(...)建议的第一行(https://stackoverflow.com/a/26838774/3358272

© www.soinside.com 2019 - 2024. All rights reserved.