小编sea*_*eak的帖子

r programming --- merge函数返回带.x和.y的列名

合并两个表时,我无法控制合并结果中的列名.为了解释我的情况,让我使用mtcars数据:

#load mtcars data.frame
data(mtcars)
Run Code Online (Sandbox Code Playgroud)

添加一个名为'car'的新列,我将用作合并键

mtcars$car <- row.names(mtcars)
Run Code Online (Sandbox Code Playgroud)

现在创建两个互斥的表.

small <- mtcars[mtcars$cyl == 4,]
med.large <- mtcars[mtcars$cyl >4,]
Run Code Online (Sandbox Code Playgroud)

现在当我进行左合并时,我应该得到'小'表,因为这两个表是互斥的:

merge(x = small, y = med.large, by = 'car', all.x=T)
Run Code Online (Sandbox Code Playgroud)

这会返回"小"表,但是每列都会出现两次.x和.y扩展名.y列所有NA(因为这两个表没有共同的记录),看起来如下所示

 car mpg.x cyl.x disp.x hp.x drat.x  wt.x qsec.x vs.x am.x gear.x carb.x mpg.y cyl.y

 1      Datsun 710  22.8     4  108.0   93   3.85 2.320  18.61    1    1       4      1    NA    NA
Run Code Online (Sandbox Code Playgroud)

如何使用主合并表中的列值只获取一次列名称,在本例中为LEFT表('small').我不知道如何避免使用.x和.y.延期?

r

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

按组计算摘要并将值返回到数据框中

df <- data.frame(
id = c('A1','A2','A4','A2','A1','A4','A3','A2','A1','A3'),
value = c(4,3,1,3,4,6,6,1,8,4))
Run Code Online (Sandbox Code Playgroud)

我希望在每个id组中获得最大值.我试过跟随,但得到一个错误,说替换有4行,数据有10我理解,但不知道如何纠正

df$max.by.id <- aggregate(value ~ id, df, max)  
Run Code Online (Sandbox Code Playgroud)

这就是我最终成功地做到了这一点

max.by.id <- aggregate(value ~ id, df, max)  
names(max.by.id) <- c("id", "max")
df2 <- merge(df,max.by.id, by.x = "id", by.y = "id")
df2
#   id value max
#1  A1     4   8
#2  A1     4   8
#3  A1     8   8
#4  A2     3   3
#5  A2     3   3
#6  A2     1   3
#7  A3     6   6
#8  A3     4   6
#9  A4     1   6
#10 …
Run Code Online (Sandbox Code Playgroud)

r

4
推荐指数
2
解决办法
158
查看次数

是否有识别单词的功能?

有没有办法评估一个字符串,看看它是否用英语评估一个单词?这是我正在寻找的

is.word("hello world")
[1] FALSE

is.word(c("hello", "world")
[1] TRUE TRUE
Run Code Online (Sandbox Code Playgroud)

由于没有is.word逻辑功能,上述功能无效.

r

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

在r中计数为零时按计数分组

我使用聚合函数来按组计数.如果count> 0,则聚合函数仅返回组的计数.这就是我所拥有的

dt <- data.frame(
n  = c(1,2,3,4,5,6),
id = c('A','A','A','B','B','B'),
group = c("x","x","y","x","x","x")) 
Run Code Online (Sandbox Code Playgroud)

应用聚合函数

my.count <- aggregate(n ~ id+group, dt, length)
Run Code Online (Sandbox Code Playgroud)

现在看到结果

my.count[order(my.count$id),]
Run Code Online (Sandbox Code Playgroud)

我得到了关注

id group   n
1  A     x 2
3  A     y 1
2  B     x 3
Run Code Online (Sandbox Code Playgroud)

我需要以下内容(最后一行为零,我需要)

id group   n
1  A     x 2
3  A     y 1
2  B     x 3
4  B     y 0
Run Code Online (Sandbox Code Playgroud)

谢谢你提前帮忙

aggregate r

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

R中的日期函数返回错误的年份

我正在尝试将一个字符字段转换为一个日期字段,该日期字段的选项将使用strptimefunction或as.Datefunction。这是两个可重现的示例:

strptime(c("5/13/2015"),"%m/%d/%y")
#result is  "2020-05-13 MST"

as.Date(c("5/13/2015"), format = "%m/%d/%y")
#result is "2020-05-13"
Run Code Online (Sandbox Code Playgroud)

为什么职能从2015年更改为2020年?如果相反,我格式化日期字符串并使用as.Date函数起作用。这是我所做的:

as.Date(c("2015/5/13"))
Run Code Online (Sandbox Code Playgroud)

而且效果很好。

有什么想法吗?

r strptime

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

标签 统计

r ×5

aggregate ×1

strptime ×1