我有一个数据库如下:
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) 我有以下矩阵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,在需要的地方添加零并保持colnames和row.names的顺序与 相同mat1。
期望的结果:
A1 B2 C3 D4
A1 …Run Code Online (Sandbox Code Playgroud) 我想在将一行绑定到新数据帧 (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) 我有几个数据集,如下所示:
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) 我有两个数据框
第一个数据
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 解决方案来将具有不同名称的嵌套列表转换为 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_rows或data.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) 我想将向量添加到列中,而不指定其他列。我有示例数据如下。
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 并替换要添加向量的列中的值可能是最简单的。然而,我认为这仍然是一个相当麻烦的解决方案。
我的目标是将代码生成的嵌套列表转换为数据帧。我有以下内容,它从循环中的多个网址中提取一些数据并将它们存储在列表中。
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中,打印乘法表的最快方法(最短代码)是什么?函数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(横向).任何人都知道如何以更紧凑的方式执行此操作?
我有大约1500个csv文件,我想加载到我的Rstudio.我将逐一使用rbind()每个csv文件.(使用for循环)我预测总估计行数为160万.然后我想将完成的数据框加载到mySQL服务器.那么数据框中可能有160万行数据吗?
r ×10
rbind ×10
dataframe ×2
dplyr ×2
data.table ×1
duplicates ×1
list ×1
matrix ×1
nested-lists ×1
purrr ×1
select ×1
seq ×1
split ×1
subset ×1
vector ×1