小编mar*_*ess的帖子

将df中的负值替换为相同的值除以2

我尝试编写一个函数,用相同的值除以2来替换向量中的值.

# replacement function for a vector
rep <- function(x)
  x.half <- {abs(replace(x, which(x<0),x/2))}
Run Code Online (Sandbox Code Playgroud)

但是,我知道这个函数不能正常工作,因为如果我模拟一个带有负数和正数的向量,我会得到错误的结果:

a <- c(1,-1,2,-2,3,-3,4,-4,5,-5,11,-11,12,-12,13,-13,21,-21,25,-25)
a.rep <- rep(a)

# data frame to test 
test <- cbind(a,a.rep)
Run Code Online (Sandbox Code Playgroud)

此外,当我将此函数应用于向量a时,我收到如下警告消息:

警告消息:替换(x,其中(x <0),x/2):要替换的项目数不是替换长度的倍数

显然,我的功能有问题.

r function

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

从 data.frame 中的每个观察值中减去两级组均值

我需要从组内的每个观察中减去按组计算的平均值。其中具有挑战性的部分是我在数据框中有一个子分组,或两个级别:V5 和 V4。这是我的 data.frame 结构的示例:

B = as.data.frame(matrix(
c(2,2,3,3,4,3,1,5,7,6,4,5,8,9,2,3,8,4,5,0,7,5,6,7,5,3,2,
"A","A","A","A","B","B","C","C","C",
"TRUE","TRUE","TRUE","TRUE","FALSE","FALSE","FALSE","FALSE","FALSE"),
nrow=9,ncol=5))
Run Code Online (Sandbox Code Playgroud)

所以我的 data.frameB看起来像这样:

  V1 V2 V3 V4    V5
1  2  6  5  A  TRUE
2  2  4  0  A  TRUE
3  3  5  7  A  TRUE
4  3  8  5  A  TRUE
5  4  9  6  B FALSE
6  3  2  7  B FALSE
7  1  3  5  C FALSE
8  5  8  3  C FALSE
9  7  4  2  C FALSE
Run Code Online (Sandbox Code Playgroud)

因此,如果我按 V5 和 V4 求平均值,我会得到一个新的 …

r dataframe dplyr data.table

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

向量的多少个元素小于或等于该向量的每个元素?

我感兴趣的是编写一个程序,该程序给出向量中元素的数量,这些元素的数量x小于或等于向量中的任何给定值x.

让我们说吧

x = [1,3,8,7,6,4,3,10,12]

我想计算内的元件的数量x,其是小于或等于1,至3〜8等.例如第五元素x[5]6和元素小于或等于的数6等于5.但是,我只知道如何进行元素比较,例如x[1]<=x[3]

我想我将使用for循环并在这里有类似的东西:

for (i in length(x)){
       if (x[i]<=x[i]){
       print(x[i])}
       # count number of TRUEs
}
Run Code Online (Sandbox Code Playgroud)

但是,这段代码显然不符合我的要求.

for-loop r vector

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

标签 统计

r ×3

data.table ×1

dataframe ×1

dplyr ×1

for-loop ×1

function ×1

vector ×1