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

R数据。表计数和存储唯一行

R数据。表计数和存储唯一行,r,data.table,R,Data.table,我有带“学生”和“分数”的“数据”,希望生成包含每个学生行数的数据列“WANT1”,如果“WANT1'>1,则“WANT2”等于“1”,如果“WANT1'

我有带“学生”和“分数”的“数据”,希望生成包含每个学生行数的数据列“WANT1”,如果“WANT1'>1,则“WANT2”等于“1”,如果“WANT1'<1,则等于“0”。我希望data.table解决方案

在按“student”分组后,将行数(
n()
)获取为“newwant1”,并检查该值是否大于1,将其强制为二进制,使用
as.integer
+

    data=data.frame("student"=c(1,1,2,2,2,2,3),
    "score"=c(7,1,5,0,5,2,1),
    "WANT1"=c(2,2,4,4,4,4,1),
    "WANT2"=c(1,1,1,1,1,1,0),
"WANT3"=c(1,1,0,0,0,0,1))

如果我们使用
data.table

library(dplyr)
data %>% 
    group_by(student) %>% 
    mutate(newwant1 = n(), newwant2 = +(newwant1 > 1))

按“student”分组后,将行数(
n()
)获取为“newwant1”,并检查该值是否大于1,将其强制为二进制,使用
as.integer
+

    data=data.frame("student"=c(1,1,2,2,2,2,3),
    "score"=c(7,1,5,0,5,2,1),
    "WANT1"=c(2,2,4,4,4,4,1),
    "WANT2"=c(1,1,1,1,1,1,0),
"WANT3"=c(1,1,0,0,0,0,1))

如果我们使用
data.table

library(dplyr)
data %>% 
    group_by(student) %>% 
    mutate(newwant1 = n(), newwant2 = +(newwant1 > 1))

您知道data.table解决方案吗这太完美了谢谢--我的最后一个问题是,我如何识别data.table解决方案来存储每个id的最低分数,如更新的示例数据文件“WANT3”中所示?我忘了在开头加上这句话。WANT3为每个学生找到最低分数,并在专栏中报告。学生1得7分,1分,所以是1分。学生2的最低分数为0,因此他们的值为0谢谢我在我的真实数据中意识到这一点我有“na”,所以我必须将na.omit设置为true谢谢。我想这可能是讽刺=)@bvowe
min
have
na.rm
参数,所以你可以使用
min(score,na.rm=TRUE)
你知道data.table解决方案吗这太完美了谢谢你--我的最后一个问题是,如何识别data.table解决方案来存储每个id的最低分数,如更新的示例数据文件“WANT3”中所示?我忘了在开头加上这句话。WANT3为每个学生找到最低分数,并在专栏中报告。学生1得7分,1分,所以是1分。学生2的最低分数为0,因此他们的值为0谢谢我在我的真实数据中意识到这一点我有“na”,所以我必须将na.omit设置为true谢谢。我想这可能是讽刺=)@bvowe
min
have
na.rm
参数,所以你可以使用
min(score,na.rm=TRUE)