Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算R中出现的次数_R_Apply - Fatal编程技术网

计算R中出现的次数

计算R中出现的次数,r,apply,R,Apply,我正在学习R,我面临一个我不知道如何解决的问题。我有一个类似于以下的输入子集,有一个client_id和7个整数: (client_id, 10, 8, -5, 8, 1, -23, 12) 我想返回相同的向量,但带有额外的字段。首先,一个包含任何其他值为负值的次数。对于上述示例,结果将是: (client_id, 10, 8, -5, 8, 1, -23, 12, 2) 因为7个整数中只有2个负数 第二个字段是0的值数 (client_id, 10, 8, -5, 8, 1, -23, 1

我正在学习R,我面临一个我不知道如何解决的问题。我有一个类似于以下的输入子集,有一个client_id和7个整数:

(client_id, 10, 8, -5, 8, 1, -23, 12)
我想返回相同的向量,但带有额外的字段。首先,一个包含任何其他值为负值的次数。对于上述示例,结果将是:

(client_id, 10, 8, -5, 8, 1, -23, 12, 2)
因为7个整数中只有2个负数

第二个字段是0的值数
(client_id, 10, 8, -5, 8, 1, -23, 12, 2, 3)
因为在0和10之间有3个值

有人能帮我解决这个问题吗


非常感谢。

如果你的向量是
x
,它将是

x <- c(x, length(which(x[-1]<0)), length(which(x[-1]>=0 & x[-1]<=10)))
x这个怎么样:

> t <- c("client_id", 10, 8, -5, 8, 1, -23, 12) # create vector
> nums <- as.numeric(t[2:length(t)]) # get numbers only from vector
> sum(nums < 0) # Counts the numbers less that 0
[1] 2
> sum(nums > 0 & nums < 10) # counts the number > 0 and < 10
[1] 3
> t <- append(t,sum(nums < 0)) # append to original vector
> t <- append(t,sum(nums > 0 & nums < 10))
> t
 [1] "client_id" "10"        "8"         "-5"        "8"         "1"         "-23"       "12"        "2"         "3"        
> 
>t nums sum(nums<0)#计算小于0的数字
[1] 2
>求和(nums>0&nums<10)#计算大于0和小于10的数字
[1] 3
>t t 0&nums<10)
>t
[1] 客户识别码“10”“8”“-5”“8”“1”“-23”“12”“2”“3”
> 

它应该是
sum
而不是
length
谢谢:)。如何将这两个操作应用于除第一个字段(Client_ID,它也是一个整数)之外的所有字段?是的,确实如此。逻辑运算符
&&
|
只对标量有效,而不对向量有效,这与它们的等价项
&
|
相反。
客户端id
是一个数字吗?
> t <- c("client_id", 10, 8, -5, 8, 1, -23, 12) # create vector
> nums <- as.numeric(t[2:length(t)]) # get numbers only from vector
> sum(nums < 0) # Counts the numbers less that 0
[1] 2
> sum(nums > 0 & nums < 10) # counts the number > 0 and < 10
[1] 3
> t <- append(t,sum(nums < 0)) # append to original vector
> t <- append(t,sum(nums > 0 & nums < 10))
> t
 [1] "client_id" "10"        "8"         "-5"        "8"         "1"         "-23"       "12"        "2"         "3"        
>