标签: rbind

R 中的字符串拆分和重复行?

我有一个数据库如下:

col1 <-c("X1",";X2","X3;X4;X5","X6;X7")
[1] "X1"       ";X2"      "X3;X4;X5" "X6;X7" 
col2 = col3 = col4 <- c("5","8","4","1")
[1] "5" "8" "1" "4"
dat <- data.frame(col1,col2,col3,col4)
 dat
      col1 col2 col3 col4
1       X1    5    5    5
2      ;X2    8    8    8
3 X3;X4;X5    4    4    4
4    X6;X7    1    1    1
Run Code Online (Sandbox Code Playgroud)

我想删除第 1 列中的分号,如果第 1 列包含超过一个 X,它将重复新行。此外,第 2 列和第 3 列将重复值,第 4 列将替换为值 0。我预计它将是:

dat
  col1 col2 col3 col4
1   X1    5    5    5
2   X2    8    8    8
3   X3    4    4 …
Run Code Online (Sandbox Code Playgroud)

split r duplicates rbind

2
推荐指数
1
解决办法
1841
查看次数

根据其他矩阵的长度向数据矩阵添加零,保持 colname 顺序

我有以下矩阵mat1

mat1 <- matrix (1:16, 4)
colnames(mat1) <- c("A1","B2","C3","D4"); row.names(mat1) <- c("A1","B2","C3","D4")

 mat1
   A1 B2 C3 D4
A1  1  5  9 13
B2  2  6 10 14
C3  3  7 11 15
D4  4  8 12 16
Run Code Online (Sandbox Code Playgroud)

我还有一个较小的矩阵small_mat

small_mat <- matrix (1:4, 2)
colnames(small_mat) <- c("A1","C3"); row.names(small_mat) <- c("A1","C3")

  A1 C3
A1  1  3
C3  2  4
Run Code Online (Sandbox Code Playgroud)

我想制作small_mat与 相同的大小mat1,在需要的地方添加零并保持colnamesrow.names的顺序与 相同mat1

期望的结果:

       A1 B2 C3 D4
    A1 …
Run Code Online (Sandbox Code Playgroud)

r matrix rbind

2
推荐指数
1
解决办法
753
查看次数

在 rbind 数据框中的一行时分配行名称

我想在将一行绑定到新数据帧 (d) 时分配一个行名 (A_B)。该行是另一个数据框 (df) 的两行之比的结果。

    df <- data.frame(ID = c("A", "B" ),replicate(3,sample(1:100,2,rep=TRUE)))
    d <- data.frame()
    d<-rbind(d, df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4])
Run Code Online (Sandbox Code Playgroud)

实际产量

    X1   X2   X3
1 0.08 0.14 0.66
Run Code Online (Sandbox Code Playgroud)

预期输出。而不是 rowname 1 我想要 A_B 作为 A_B 比率的结果

       X1   X2   X3
A_B 0.08 0.14 0.66
Run Code Online (Sandbox Code Playgroud)

r rbind

2
推荐指数
2
解决办法
1万
查看次数

仅选择数据框中与 R 中另一个数据框具有相同列名的列

我有几个数据集,如下所示:

df1 <- data.frame (
A1_01 = c(1, 0, 0, 1, 0, 1, 0, 1, 0, 0),
A2_01 = c(1, 1, 1, 0, 1, 0, 0, 0, 0, 0),
A3_02 = c(0, 0, 0, 1, 0, 1, 0, 1, 1, 0),
L1_02 = c(1, 1, 1, 1, 1, 0, 0, 1, 1, 0),
L2_02 = c(0, 0, 0, 1, 1, 1, 0, 1, 0, 0),
age = rep(c("40-44", "45-49", "50-54", "55-59", "60-64"),2),
gender = c(rep("M",5), rep("F",5)),
ID = c("A12345", "A23456", …
Run Code Online (Sandbox Code Playgroud)

select r subset rbind dplyr

2
推荐指数
1
解决办法
2654
查看次数

绑定两个具有不同列名的数据框

我有两个数据框

第一个数据

        col1  col2 col3
A1       4     11  15
A2       2      9  17
A3       3      4   4 
B1       10     5   4   
B2        6     1   8
C1       12     1  12
C2        2     5   8
D1        4     1   6 
D2        2     1   8
Run Code Online (Sandbox Code Playgroud)

第二个数据

          meancol1   meancol2 meancol3
meanA        3          8      12
meanB        8          3       6
meanC        7          3      10
meanD        3          1       7
Run Code Online (Sandbox Code Playgroud)

我想组合两个数据帧并保留第一个数据集的列名,所以我想要的结果是:

          col1  col2 col3
    A1       4     11  15
    A2       2      9  17
    A3       3      4   4 
    B1       10     5 …
Run Code Online (Sandbox Code Playgroud)

r multiple-columns dataframe rbind dplyr

2
推荐指数
1
解决办法
1590
查看次数

将具有不同名称的嵌套列表转换为 data.frame 填充 NA 并添加列

我需要一个基本的 R 解决方案来将具有不同名称的嵌套列表转换为 data.frame

mylist <- list(list(a=1,b=2), list(a=3), list(b=5), list(a=9, z=list('k'))

convert(mylist)
## returns a data.frame:
##
##     a     b    z           
##     1     2    <NULL>   
##     3    NA    <NULL>   
##    NA     5    <NULL>   
##     9    NA    <chr [1]>
Run Code Online (Sandbox Code Playgroud)

我知道这可以很容易地用dplyr::bind_rowsdata.table::rbindlistwith完成fill = TRUE(虽然并不理想,因为它用NULL,而不是填充字符列NA),但我确实需要基本 R 中的解决方案。为了简化问题,使用 2 级嵌套也可以没有第三级列表的列表,例如

mylist <- list(list(a=1,b=2), list(a=3), list(b=5), list(a=9, z='k'))

convert(mylist)
## returns a data.frame:
##
##     a     b    z           
##     1     2    NA   
##     3    NA    NA …
Run Code Online (Sandbox Code Playgroud)

r list nested-lists dataframe rbind

2
推荐指数
1
解决办法
680
查看次数

将向量添加到列,而不指定其他列

我想将向量添加到列中,而不指定其他列。我有示例数据如下。

library(data.table)
dat <- fread("A B C D
              one 2 three four
              two 3 NA    one")

vector_to_add <- c("five", "six")
Run Code Online (Sandbox Code Playgroud)

期望的输出:

out <- fread("A B C D
              one 2 three four
              two 3 NA    one
              NA  NA five  NA
              NA  NA six   NA")
Run Code Online (Sandbox Code Playgroud)

我看到一些答案使用向量用于行绑定的方法:

row3 < c(NA, NA, "five", NA)
Run Code Online (Sandbox Code Playgroud)

然而,我想找到一个没有指定整行的解决方案。

编辑NA:发布后不久,我意识到对于向量中的每个条目,采用现有行、创建 row 并替换要添加向量的列中的值可能是最简单的。然而,我认为这仍然是一个相当麻烦的解决方案。

r vector rbind data.table

2
推荐指数
1
解决办法
141
查看次数

将嵌套列表转换为 R 中的数据框

我的目标是将代码生成的嵌套列表转换为数据帧。我有以下内容,它从循环中的多个网址中提取一些数据并将它们存储在列表中。

library(rvest)
library(XML)
library(purrr)
library(stringr)
library(dplyr)

# declare variables
month = c('07','09')
year = c('2022','2023')
day = c('040','050')

# initialize the empty list
final = list()

# perform the loop
for (i in year) {
  for (j in month) {
    for (k in day) {
    
    skip_to_next <- FALSE
    
    url <- paste0('https://www.baseball-reference.com/boxes/ARI/ARI', i, j, k, '.shtml')
    
    Sys.sleep(5)
    game_path <- tryCatch(url |>
                            read_html() |>
                            html_nodes(xpath = '//div[contains(@id, "batting")]') |> 
                            map(\(x) x |> 
                                  as.character() |> 
                                  str_remove_all("<!--|-->") |> 
                                  read_html() |> 
                                  html_table()) |> 
                            unlist(recursive = …
Run Code Online (Sandbox Code Playgroud)

r rbind purrr

2
推荐指数
1
解决办法
110
查看次数

使用最少的代码打印乘法表

在R中,打印乘法表的最快方法(最短代码)是什么?函数seq rep和绑定函数有帮助,但我正在寻找最短的代码行来完成这项工作.

rbind("1\'s"=1:12, "2\'s"=seq(2,24,2), "3\'s"=seq(3,36,3), 
      "4\'s"=seq(4,48,4), "5\'s"=seq(5,60,5), "6\'s"=seq(6,72,6))
Run Code Online (Sandbox Code Playgroud)

打印1到6(横向).任何人都知道如何以更紧凑的方式执行此操作?

r seq rbind

1
推荐指数
2
解决办法
2960
查看次数

R中数据帧的行限制是多少?

我有大约1500个csv文件,我想加载到我的Rstudio.我将逐一使用rbind()每个csv文件.(使用for循环)我预测总估计行数为160万.然后我想将完成的数据框加载到mySQL服务器.那么数据框中可能有160万行数据吗?

r rbind

1
推荐指数
1
解决办法
4954
查看次数