我有一个30000数据的数据帧。我想根据“客户ID”列创建一个新的“客户名称”列。 例如如果客户ID是“100”,在比新的列中的数据帧的任意位置应显示“customer1表”如果ID是“200”,那么它应显示“顾客2”我试图做到这一点一个for循环和函数,但徒劳无功。如何根据R中的数据框中的其他列获取列中每个元素的新名称?
我附上了查询的截图,我有:
我有一个30000数据的数据帧。我想根据“客户ID”列创建一个新的“客户名称”列。 例如如果客户ID是“100”,在比新的列中的数据帧的任意位置应显示“customer1表”如果ID是“200”,那么它应显示“顾客2”我试图做到这一点一个for循环和函数,但徒劳无功。如何根据R中的数据框中的其他列获取列中每个元素的新名称?
我附上了查询的截图,我有:
如果你的截图是代表真实的数据,你可以尝试
data.frame$new.customer.id <- paste("Customer", CustomerID/100, sep = " ")
作为建议的话,会您将来会为您的数据提供一个具有代表性的示例,例如:
dput(yourData)
产生类似:
structure(list(Receipt_no = 111:116, Customer_ID = c(100L, 100L,
200L, 300L, 100L, 400L), Customer_Name = structure(c(1L, 1L, 2L,
3L, 1L, 4L), .Label = c("Customer 1", "Customer 2", "Customer 3",
"Customer 4"), class = "factor")), .Names = c("Receipt_no", "Customer_ID",
"Customer_Name"), class = "data.frame", row.names = c(NA, -6L))
你可以使用同样的变异dplyr。
library("dplyr")
tbl_df(yourData)%>%mutate(`Customer Name`=paste("Customer",as.numeric(unlist(yourData%>%select(2)))/100)
当然,我会牢记这一点。我是R新手,所以从答案中可以看出,我的问题有点含糊。感谢您的建议 :) –
那么CustomerID是否有“32500”的值?那么你是否想放弃尾随的两个零?那么像“356000”这样的数字呢?只需放2个零或全部三个? –
是的,它有像“32500”这样的重复10次的随机值,我需要的是在所有这10个条目中获得一个“名称”作为“客户[我]”,其中我为这10位客户获得相同的价值,如果客户ID变化[i]也将改变。例如:如果customerid [firstcell] == customerid [second cell],那么CustomerName = CustomerName1,i = i + 1,否则(不匹配)customername = customername2,直到单元格值发生变化,我希望我能清除我的问题。 –