“$<;-”中出现错误。data.frame`(`*tmp*`,R的循环
早上好 我的自行车有问题 我的数据帧是:“$<;-”中出现错误。data.frame`(`*tmp*`,R的循环,r,R,早上好 我的自行车有问题 我的数据帧是: Name_FD Column_A Column_B Column_C Column_D Column_X Element1 8808864430 88440000011863 Text1 *NA* Element2 8808877431 88455000045863 Text2 *NA* Element3 8808886677 88447800011865 Text3
Name_FD
Column_A Column_B Column_C Column_D Column_X
Element1 8808864430 88440000011863 Text1 *NA*
Element2 8808877431 88455000045863 Text2 *NA*
Element3 8808886677 88447800011865 Text3 *NA*
Element4 8808888830 88455000045867 Text4 *NA*
Element5 8808888830 88440000011869 Text5 *NA*
Element6 8808888830 88455000045810 Text6 *NA*
Element7 8808889977 88447800011865 Text3 *NA*
Element7 8808889977 88447800011865 Text3 *NA*
我的代码是:
Name_FD$Column_X <- rep(NA, length(Name_FD$Column_B))
for (i in Name_FD$Column_B){
for ( j in Name_FD$Column_B[-1,]) {
if(i == j) {
Fonte_Dati$x[i]= 1
} else {
Fonte_Dati$x[i]= 0
}
}
}
Name\u FD$Column\u X我认为有一种更简单的方法:)
Name\u FD%mutate(列X=ifelse(列B==lead(列B),1,0))
#列A列B列C列D列X
#1元素1 880846440 8.84400e+13文本1 0
#2元素2 880877431 8.84550e+13文本2 0
#3元素3 88086677 8.84478e+13文本3 0
#4元素4 88088830 8.84550e+13文本4 1
#5元素5 88088830 8.84400e+13文本5 1
#6元素6 88088830 8.84550e+13文本6 0
#7要素7 88089977 8.84478e+13文本3 1
#8元素7 88089977 8.84478e+13文本3 NA
您是否可以将dplyr
的lead
和lag
与ifelse
结合使用<代码>名称\u FD%>%变异(列\u X=ifelse(列\u B==lead(列\u B),1,0))
将替换整个代码above@Wimpel谢谢你的评论。我不是专家,因为我在学习R。我问这个问题是因为我想理解逻辑并超越我的极限。“如果你有什么建议,我想深入研究一下。”弗朗西斯科曾经去过那里。。。当你已经有了编程经验而学习R时,最难做的事情就是放开For循环(在大多数情况下):)就像我6分钟前建议的;-)(看评论)啊,对不起,在我写这篇文章的时候,我没有看到你的评论!弗朗西索,你应该接受温佩尔的回答别担心。。总是发生在我身上:)。有趣的是,我这次站在另一边。。我把我的命令升级为一个答案。。。因此,如果您愿意,您可以删除您的答案,以保持stackoverflow“干净”。您的解决方案清晰简单。我已经在我的代码中实现了这个解决方案,它运行得非常好。再次感谢您提供的解决方案,并为我指点图书馆的小摆设。
Error in Name_FD$Column_B[-1, ] : incorrect number of dimensions
Error in `$<-.data.frame`(`*tmp*`, "Column_X", value = c(NA, NA, NA, NA, NA, :
replacement has 16669 rows, data has 16668
library(dplyr)
Name_FD %>%
mutate(Column_X = ifelse(Column_B == lead(Column_B), 1, 0)
Name_FD <- read.table( text = "Column_A Column_B Column_C Column_D
Element1 8808864430 88440000011863 Text1
Element2 8808877431 88455000045863 Text2
Element3 8808886677 88447800011865 Text3
Element4 8808888830 88455000045867 Text4
Element5 8808888830 88440000011869 Text5
Element6 8808888830 88455000045810 Text6
Element7 8808889977 88447800011865 Text3
Element7 8808889977 88447800011865 Text3", header = TRUE)
library(tidyverse)
Name_FD %>% mutate( Column_X = ifelse( Column_B == lead( Column_B ), 1, 0 ) )
# Column_A Column_B Column_C Column_D Column_X
# 1 Element1 8808864430 8.84400e+13 Text1 0
# 2 Element2 8808877431 8.84550e+13 Text2 0
# 3 Element3 8808886677 8.84478e+13 Text3 0
# 4 Element4 8808888830 8.84550e+13 Text4 1
# 5 Element5 8808888830 8.84400e+13 Text5 1
# 6 Element6 8808888830 8.84550e+13 Text6 0
# 7 Element7 8808889977 8.84478e+13 Text3 1
# 8 Element7 8808889977 8.84478e+13 Text3 NA