相关疑难解决方法(0)

如何更改数据表中的几个列名称

我有一个包含10列的数据表.

town    
tc  
one  
two  
three   
four    
five    
six  
seven   
total
Run Code Online (Sandbox Code Playgroud)

需要为我使用的"一"到"总"列生成平均值,

DTmean <- DT[,(lapply(.SD,mean)),by = .(town,tc),.SDcols=3:10]
Run Code Online (Sandbox Code Playgroud)

这会生成均值,但我希望列名称后缀为"_mean".我们应该怎么做?希望前两列保持与"town"和"tc"相同.我尝试了以下但是然后它将所有"one"重命名为"total"到"_mean"

for (i in 3:10) {
  setnames(DTmean,i,paste0(names(i),"_mean"))
}
Run Code Online (Sandbox Code Playgroud)

r data.table

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

如何做r中的左连接

我有两个数据集一和二

数据集一

a     b  c
111   a  1
112   b  2 
113   c  3
114   d  4
115   e  5
Run Code Online (Sandbox Code Playgroud)

数据集二

e    d   g
222  ss  11
111  ff  22
113  ww  33 
114  qq  44
234  dd  55
534  vv  66
Run Code Online (Sandbox Code Playgroud)

我想做一个左连接

下面是用SQL编写的代码,但是当我在SQLDF中尝试它时,它显示为错误

proc sql;
create table join1 as
select one.*, two.*
from  one left join two
on one.a = two.e;
quit;
Run Code Online (Sandbox Code Playgroud)

r

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

在R中附加数据集

我有2个数据集:

数据1:

Var1 Var2   Var3    Var4
10    10      2   3
9      2      8   3
6      4      4   8
7      3     10   8
Run Code Online (Sandbox Code Playgroud)

数据2:

Var1 Var5   Var3    Var6
  3    6      6   4
  1    2      5   1
  9    2      2   9
  2    6      3   2
Run Code Online (Sandbox Code Playgroud)

现在我想附加这2个数据集

最终数据:

Var1  Var2    Var3  Var4  Var5 Var6
10      10       2     3        
9        2       8     3        
6        4       4     8        
7        3      10     8        
3                      4     6    6
1                      1     2    5
9                      9     2    2
2 …
Run Code Online (Sandbox Code Playgroud)

merge r

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

值与r中的多个值匹配

您有两个数据框:

df <- data.frame(A = c(1,1,2,2,3,3), B = c('cat','dog','cat','dog','cat','dog'), C = c(100,200,300,400,500,600)) 
df2 <- data.frame(A = c(1,1,1,1,2,2,2,2,3,3,3,3), B = c('cat','dog','cat','dog','cat','dog')) 
Run Code Online (Sandbox Code Playgroud)

输出df1:

 A   B   C
 1 cat 100
 1 dog 200
 2 cat 300
 2 dog 400
 3 cat 500
 3 dog 600
Run Code Online (Sandbox Code Playgroud)

输出df2:

A   B
1 cat
1 dog
1 cat
1 dog
2 cat
2 dog
2 cat
2 dog
3 cat
3 dog
3 cat
3 dog
Run Code Online (Sandbox Code Playgroud)

我知道如何匹配单个值,以便当'A'值在df和df2上匹配时,它将把该值添加到df2:

df2$match <- df$C[match(df2$A, df$A)]
Run Code Online (Sandbox Code Playgroud)

输出:

A   B match
1 cat …
Run Code Online (Sandbox Code Playgroud)

r matching

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

合并DF时删除重复项

我知道,我知道....另一个合并的 Df 问题,请听我说,因为我已经搜索了关于这个问题的答案,但没有出现。

我正在合并两个 Df,一个比另一个小,并进行左合并,以将较长的 DF 与较小的 DF 相匹配。

这很有效,除了一个问题,当右侧(较长)df 有重复项时,行会添加到左侧(较小)df 中。

一个例子:

Row<-c("a","b","c","d","e")
Data<-(1:5)
df1<-data.frame(Row,Data)

Row2<-c("a","b","b","c","d","e","f","g","h")
Data2<-(1:9)
df2<-data.frame(Row2,Data2)

names(df2)<-c("Row","Data2")

DATA<-merge(x = df1, y = df2, by = "Row", all.x = TRUE)

>DATA
  Row Data Data2
1   a    1     1
2   b    2     2
3   b    2     3
4   c    3     4
5   d    4     5
6   e    5     6
Run Code Online (Sandbox Code Playgroud)

看到额外的“b”行?,这就是我想要摆脱的,我想保留左边的 DF,但非常严格,就像 DF1 中有 5 行,合并时我希望只有 5行。

像这样...

  Row Data Data2
1   a    1     1
2   b    2     2
3 …
Run Code Online (Sandbox Code Playgroud)

merge r

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

根据两列中的值从两个现有数据框创建新数据框

输入数据帧

DF 1(示例 - nrow = 10)

Col A | Col B | Col C
  a       1       2    
  a       3       4    
  b       5       6    
  c       9      10    
Run Code Online (Sandbox Code Playgroud)

DF 2(示例 - nrow = 20)

Col A | Col B | Col E
  a       1       22    
  a       31      41    
  a       3       63    
  b       5       6
  b       11      13   
  c       9       20 
Run Code Online (Sandbox Code Playgroud)

我想创建第三个数据集,其中包含在数据帧 2 中为 Col A 和 Col B 条目找到的每个附加行。

输出文件(nrow = 20-10 = 10)

Col A | Col B | …
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr data-cleaning

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

如何将 match 函数与 mutate 函数一起使用?

我正在尝试在mutate(). df1假设我们从一个如下所示的数据框开始,由下面的代码生成:

  ID Status
1  1      N
2  2      Y
3  3      Y
4  4      N
5  5      Y

df1 <- data.frame(
  ID = c(1,2,3,4,5),
  Status = c("N","Y","Y","N","Y")
)
Run Code Online (Sandbox Code Playgroud)

我使用 dplyr 的mutate()函数根据最右侧“状态”列的值生成一个新列。下面是新的tmp数据帧输出和生成它的 dplyr 代码(这是一个超级简单的示例,适用于我的更大问题 - 就这样吧):

  ID Status Flag
1  1      N   No
2  2      Y  Yes
3  3      Y  Yes
4  4      N   No
5  5      Y  Yes

tmp <- 
  df1 %>% 
  mutate("Flag"=case_when(Status=="Y"~"Yes",TRUE~"No"))
Run Code Online (Sandbox Code Playgroud)

我试图在上面嵌入“匹配”函数的等效项mutate(),以便插入到 Flag 列中的值取决于df1数据帧中的 ID 与这两个附加数据帧中的 …

r match mutated dplyr

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

通过参数连接data.table

我有两个data.table dxdy

dx <- data.table(a = c(1,1,1,1,2,2), b = 3:8)
dy <- data.table(a = c(1,1,2), c = 7:9)
Run Code Online (Sandbox Code Playgroud)

我想加入dy到每一行dx,下面是所需的输出

data.table(plyr::ddply(dx, c("a", "b"), function(d) merge(d, dy, by = "a")))
    a b c
 1: 1 3 7
 2: 1 3 8
 3: 1 4 7
 4: 1 4 8
 5: 1 5 7
 6: 1 5 8
 7: 1 6 7
 8: 1 6 8
 9: 2 7 9
10: 2 8 9
Run Code Online (Sandbox Code Playgroud)

但是,我没有使用内部[]的操作 …

r data.table

0
推荐指数
2
解决办法
7160
查看次数

如何基于每个数据框中具有不同名称的两列将两个数据框与dplyr连接起来?

这是一个非常简单的问题,但在这里找不到合适的答案。

一个如何将两个data.frame dplyr基于两个在每个data.frame中具有不同名称的列连接在一起?

有了base::merge一个可以简单merge

df3 <- merge(df1, df2, by.x=c("name1", "name2"), by.y=c("name3", "name4"))
Run Code Online (Sandbox Code Playgroud)

在哪里df1$name1 == df2$name3df1$name2 == df2$name4

如何做到这一点dplyr


我知道一个人可以使用该by函数dplyr来连接两个基于一个具有不同名称的列的data.frame:

df3 <- dplyr::left_join(df1, df2, by=c("name1" = "name3"))
Run Code Online (Sandbox Code Playgroud)

merge r dataframe dplyr

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

查找多个数据集共有的列

我有多个包含多个列的数据集。我想提取所有数据集共有的列。例如。如果所有数据集都有一个名为“id”或“Age”的列,我想提取它们。我如何知道哪些列是所有数据集共有的。

最初我想到使用 head 函数,然后检查这些值以检查相似性。但如果有多个数据集,这可能会变得非常乏味。

r

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

在 R 中水平组合两个数据框

我想在 R 中水平组合两个数据框。

这是我的两个数据框:

数据框1:

veg     loc    quantity 

carrot  sak    three
pepper  lon    two
tomato  apw    five
Run Code Online (Sandbox Code Playgroud)

数据框2:

seller   quantity  veg

Ben      eleven    eggplant  
Nour     six       potato
Loni     four      zucchini
Ahmed    two       broccoli
Run Code Online (Sandbox Code Playgroud)

我希望结果是一个如下所示的数据框:

veg       quantity

carrot    three
pepper    two
tomato    five
eggplant  eleven
potato    six
zucchini  four
broccoli  two
Run Code Online (Sandbox Code Playgroud)

r

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

标签 统计

r ×11

dplyr ×3

merge ×3

data.table ×2

dataframe ×2

data-cleaning ×1

match ×1

matching ×1

mutated ×1