Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 - Fatal编程技术网

R 计算每行输入的列数

R 计算每行输入的列数,r,R,可能是一个非常基本的问题,但我想不出来。 假设以下测试代码: test1 = tibble::tribble( ~name1, ~name2, ~name3, ~name4, ~name5, "B565", "F226", NA, NA, NA, "W342", "DUPLICATE", NA, NA, NA, "H452&

可能是一个非常基本的问题,但我想不出来。 假设以下测试代码:

test1 = tibble::tribble(
  ~name1,      ~name2, ~name3, ~name4, ~name5,
  "B565",      "F226",     NA,     NA,     NA,
  "W342", "DUPLICATE",     NA,     NA,     NA,
  "H452",      "K632", "L553", "DUPLICATE", "R551"
)
Created on 2021-06-08 by the reprex package (v2.0.0)
不,我只想计算每一行在没有NAs的情况下有多少条目,并将结果放入一个新列
test1$itemno

我觉得rowSum是个好主意


谢谢你的帮助

我的解决方案如下:

total=c()
对于(i in 1:length(test1$name1)){
总计=c(总计,总和(test1[i,]!=“”)
}
test1$itemno=total
测试1
输出

#一个tible:3 x 6
名称1名称2名称3名称4名称5项目编号
1 B565 F226“2
2 W342重复“”2
3 H452 K632“L553”重复“R551”5

注意:您可能可以使用该系列中的函数找到更优雅的解决方案。

使用
dplyr

库(dplyr)
测试1%>%
行()
变异(itemno=sum(!c_overs()=“”)

dplyr
如果没有
rowwise
您可以这样做

库(dplyr)
test1%>%变异(项计数=行和(当前数据()!=“”))
#>#tibble:3 x 6
#>名称1名称2名称3名称4名称5项目计数
#>                         
#>1 B565 F226“2
#>2 W342重复“”2
#>3 H452 K632“L553”重复“R551”5
由(v2.0.0)于2021-06-07创建


关于修订数据

test1 %>% mutate(item_count = rowSums(!is.na(cur_data())))

# A tibble: 3 x 6
  name1 name2     name3 name4     name5 item_count
  <chr> <chr>     <chr> <chr>     <chr>      <dbl>
1 B565  F226      NA    NA        NA             2
2 W342  DUPLICATE NA    NA        NA             2
3 H452  K632      L553  DUPLICATE R551           5
test1%>%mutate(item\u count=rowSums(!is.na(cur\u data()))
#一个tibble:3x6
名称1名称2名称3名称4名称5项目计数
1 B565 F226 NA 2
2 W342重复NA 2
3 H452 K632 L553重复R551 5
我们也可以


test1$item_count <-  rowSums(test1 != ''))


test1$item_count感谢您对空字符串的回答,这很好。现在我更新了代码,并将NA替换为空字符串,但如果我替换!=''去=NA计数不再起作用了。@MaxH。这不是处理NAs的正确方法。使用is.na()或!是不是很完美,谢谢