gpt4 book ai didi

r - 通过循环从数据框中填充矩阵

转载 作者:行者123 更新时间:2023-12-04 09:28:29 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





R Reshape data frame from long to wide format? [duplicate]

(3 个回答)


去年关闭。




基于数据集(请参阅“输入”),我想创建以下矩阵:

> A
BM CC E F I S CnC D
BR 1 2 3 4 5 6 NA NA
MX 7 8 11 12 13 14 9 10

输入:
cntry <- c("BR", "BR", "BR", "BR", "BR", "BR", "MX", "MX", "MX","MX", "MX", "MX", "MX", "MX")
sector <- c("BM", "CC", "E", "F", "I", "S","BM", "CC", "CnC", "D", "E", "F", "I", "S")
ratio <- seq(1, 14)
data <- data.frame(cbind(cntry, sector, ratio)
> data
cntry sector ratio
1 BR BM 1
2 BR CC 2
3 BR E 3
4 BR F 4
5 BR I 5
6 BR S 6
7 MX BM 7
8 MX CC 8
9 MX CnC 9
10 MX D 10
11 MX E 11
12 MX F 12
13 MX I 13
14 MX S 14
我尝试了以下但无法进一步进行:
cntry_n <- nrow(cntry) # number of countries (here: 2), duplicates were removed
sector_n <- nrow(sector) # number of sectors(here: 8), duplicates were removed

A <- matrix(0, cntry_n, sector_n) # Zero was used as a default
rownames(A) <- cntry
colnames(A) <- sector

> A
BM CC E F I S CnC D
BR 0 0 0 0 0 0 0 0
MX 0 0 0 0 0 0 0 0

for(m in 1:cntry_n){
for(n in 1:sector_n){
A[m, n] = ????
}
}

有没有有效的方法来解决这样的问题?
任何帮助真的很感激!

最佳答案

你可以试试:

library(tidyr)
data2 <- pivot_wider(data,names_from = sector,values_from = ratio)

# A tibble: 2 x 9
cntry BM CC E F I S CnC D
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 BR 1 2 3 4 5 6 <NA> <NA>
2 MX 7 8 11 12 13 14 9 10

关于r - 通过循环从数据框中填充矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62933515/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com