我所知道的必须是一个简单的答案,但我似乎无法弄明白。
假设我有一个数据集:
id <- c(1,1,1,2,2,3,3,4,4)
visit <- c("A", "B", "C", "A", "B", "A", "C", "A", "B")
test <- c(12,16, NA, 11, 15,NA, 0,12, 5)
df <- data.frame(id,visit,test)
我想知道每次访问的数据点数,以便最终输出看起来像这样:
visit test
A 3
B 3
C 1
我该怎么做呢?我试过用表
table(df$visit, df$test)
但是我得到了一个完整的网格,其中显示了访问量和测试值组合的值数。
我可以通过这样做来对每一行求和:
sum(table(df$visit, df$test))[1,]
sum(table(df$visit, df$test))[2,]
sum(table(df$visit, df$test))[3,]
但我觉得有一种更简单的方法,我想念它!任何帮助将不胜感激!
答案 0 :(得分:1)
import java.util.*;
public class StringReverser
{
public static String getReverser(String i)
{
if (i==(" "))
return "";
if (i.charAt(0)==i.charAt(1))
return i.substring(1) + getReverser(i.substring(2));
else
return getReverser(i.substring(1));
}
public static void main (String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("Enter a String");
String in = sc.nextLine();
System.out.println(getReverser(in));
}
}
对此非常理想。按Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 1
at java.lang.String.charAt(String.java:646)
at StringReverser.getReverser(StringReverser.java:9)
at StringReverser.getReverser(StringReverser.java:12)
at StringReverser.getReverser(StringReverser.java:10)
at StringReverser.main(StringReverser.java:20)
对aggregate
进行分组并计算id
。在确定visit
length
删除NA
行
!is.na()
答案 1 :(得分:0)
怎么样:
data.frame(rowSums(table(df$visit, df$test)))